如何避免在try-Catch块中定义未赋值的局部变量

How to avoid #39;Unassigned Local Variable#39; defined inside a try-catch block(如何避免在try-Catch块中定义未赋值的局部变量)

本文介绍了如何避免在try-Catch块中定义未赋值的局部变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我经常遇到的一个错误。虽然我设法用这样或那样的方式绕过了它,但它真的让我很恼火。 在下面的代码片段中,我希望安全防范来自myRequest.GetResponse()的异常

        WebRequest myRequest = WebRequest.Create(baseUri.OriginalString);
        WebResponse myResponse;
        Stream myStream;
        StreamReader reader;
        try
        {
            myResponse = myRequest.GetResponse();
            myStream = myResponse.GetResponseStream();
            reader = new StreamReader(myStream);
        }
        catch (WebException status)
        {
            txtConsole.AppendText("Error in GetLinks::WebException
" + status.Response);
            txtConsole.AppendText(Environment.NewLine);
        }
        catch
        {
            txtConsole.AppendText("Some error in GetLinks");
            txtConsole.AppendText(Environment.NewLine);
        }

        Regex regex = new Regex(@"s*(?i)hrefs*=s*(""([^""]*"")|'[^']*'|([^'"">s]+))", RegexOptions.IgnoreCase);
        MatchCollection splits = regex.Matches(reader.ReadToEnd());

现在,当我尝试构建/编译代码时,它显示

"使用未赋值的局部变量‘Reader’"

现在我的问题是,如果try语句顺利运行而没有抛出任何异常,为什么编译器不能访问try块内分配给Reader的值?

推荐答案

您正在使用一个变量,该变量在Try/Catch块外部赋值。您需要将整个代码移到try块中。

您可以像@Svexo建议的那样为它赋值null,但这将在流错误输出时引发异常。

这篇关于如何避免在try-Catch块中定义未赋值的局部变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何避免在try-Catch块中定义未赋值的局部变量

基础教程推荐