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

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Is there a runtime benefit to using const local variables?(使用 const 局部变量有运行时的好处吗?)
When does a local variable inside a function *actually* gets allocated(函数内的局部变量何时*实际*被分配)
How to remove compiler error with struct: quot;Use of unassigned local variablequot;(如何使用 struct 删除编译器错误:“使用未分配的局部变量)
Strange behavior with actions, local variables and garbage collection in MVVM light Messenger(MVVM light Messenger 中的动作、局部变量和垃圾收集的奇怪行为)
Why does this (null || !TryParse) conditional result in quot;use of unassigned local variablequot;?(为什么这个 (null || !TryParse) 条件会导致“使用未分配的局部变量?)
Why does adding local variables make .NET code slower(为什么添加局部变量会使 .NET 代码变慢)