【发布时间】:2015-06-01 23:31:38
【问题描述】:
通过浏览器调用以下代码,如果发生异常,则“Try Catch”永远不会捕获该异常,而是将异常报告给屏幕。我试过在不调试的情况下运行以及关闭 CLR 错误。任何建议将不胜感激:
public string GetUrl(string url)
/*Grab remote page */
{
string target = string.Empty;
HttpWebRequest httpWebRequest = null;
HttpWebResponse response = null;
StreamReader streamReader = null;
try
{
httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
response = (HttpWebResponse)httpWebRequest.GetResponse();
streamReader = new StreamReader(response.GetResponseStream(), true);
target = streamReader.ReadToEnd();
}
catch (WebException e)
{
Console.WriteLine("Error:GetUrl()");
Console.WriteLine("\n{0}", e.Message);
Console.WriteLine("\n{0}", e.Status);
}
finally
{
streamReader.Close();
response.Close();
}
return target;
}
【问题讨论】:
-
您在哪一行得到了异常?你调试了吗?如果您在关闭阅读器的 finally 块中获得它,它不会抓住它。
-
第一个异常在try之后立即发生
-
streamReader 在你的 finally 块上可以为 null,如果你得到 404 会抛出另一个异常。
-
url 字符串是什么?
标签: c# debugging error-handling