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块中定义未赋值的局部变量
基础教程推荐
猜你喜欢
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- WPF 模态进度窗口 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
