これは、私が定期的に直面するエラーの 1 つです。なんとか回避できているのですが、本当にイライラします。以下のコード スニペットでは、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\n" + status.Response);
txtConsole.AppendText(Environment.NewLine);
}
catch
{
txtConsole.AppendText("Some error in GetLinks");
txtConsole.AppendText(Environment.NewLine);
}
Regex regex = new Regex(@"\s*(?i)href\s*=\s*(\""([^""]*\"")|'[^']*'|([^'"">\s]+))", RegexOptions.IgnoreCase);
MatchCollection splits = regex.Matches(reader.ReadToEnd());
今、コードをビルド/コンパイルしようとすると、
「割り当てられていないローカル変数 'reader' の使用」
私の質問ですが、例外がスローされずに try ステートメントがスムーズに実行される場合、コンパイラーが try ブロック内のリーダーに割り当てられた値にアクセスできないのはなぜですか?