C# 为什么我的异常处理代码不处理异常?
我有一些C#代码,可以使用HttpWebRequest类关闭远程网站。我正在使用try/catch处理错误,但某些错误(如Webrequest和IOException)似乎没有通过我的设置方式被“捕获”:C# 为什么我的异常处理代码不处理异常?,c#,asp.net,C#,Asp.net,我有一些C#代码,可以使用HttpWebRequest类关闭远程网站。我正在使用try/catch处理错误,但某些错误(如Webrequest和IOException)似乎没有通过我的设置方式被“捕获”: try { StartScrap("http://www.domain.com"); } catch (Exception ex) { LogError(ex.ToString(); } private void StartScrap(string url) { H
try
{
StartScrap("http://www.domain.com");
}
catch (Exception ex)
{
LogError(ex.ToString();
}
private void StartScrap(string url)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseText = String.Empty;
using (StreamReader readerStream = new StreamReader(responseStream, System.Text.Encoding.UTF8))
{
responseText = readerStream.ReadToEnd(); <-- I will sometimes get a Webexception error here that won't get caught above and stops the code
}
}
}
public TrayIcon()
{
InitializeComponent();
}
private void TrayIcon_Load(object sender, EventArgs e)
{
try
{
StartScrap("http://www.domain.com");
}
catch (Exception ex)
{
LogError(ex.ToString());
}
finally
{
StartTimer();
}
}
private void StartTimer()
{
Timer Clock = new Timer();
Clock.Interval = 600000;
Clock.Start();
Clock.Tick += new EventHandler(TrayIcon_Load);
}
你说的“停止代码”到底是什么意思?您是否碰巧在调试器中运行?我的猜测是,如果您在调试器之外运行,或者只是在调试器中再次点击“run”,那么您将进入catch块,不会出现任何问题。或者,进入调试器设置并更改调试器进入的位置
当然,如果调试器中没有发生这种情况,我们只需要更多关于您所看到的内容的信息。您所说的“停止代码”到底是什么意思?您是否碰巧在调试器中运行?我的猜测是,如果您在调试器之外运行,或者只是在调试器中再次点击“run”,那么您将进入catch块,不会出现任何问题。或者,进入调试器设置并更改调试器进入的位置
当然,如果调试器中没有发生这种情况,我们只需要有关您所看到的内容的更多信息。可能是LogError正在引发异常吗?可能是LogError正在引发异常吗?坦率地说,我不确定到底发生了什么,但我建议您继续。(记录模块和处理程序时出错)
这是一个如何为ELMAH一步一步完成的步骤。坦白地说,我不确定到底发生了什么,但我建议您继续。(错误日志模块和处理程序)
是如何一步一步地为ELMAH调用的。无需担心,我发现我调用了错误的函数我的Timer类,它绕过了事件处理程序。无需担心,我发现我调用了错误的函数我的Timer类,它绕过了事件处理程序。在调试模式下,它命中了那行代码,但当它运行时,我得到了t然后,Windows错误对话框询问我是要查看详细信息,继续还是取消(希望我有它的屏幕截图)。LogError当时一定会引发异常。在调试模式下,它会命中该行代码,但当它运行时,我会看到Windows错误对话框,然后询问我是要查看详细信息,继续还是取消(希望我有它的屏幕截图).LogError必须抛出异常。不,因为我没有在LogError函数中写入任何内容,现在它只是存根代码。不,因为我没有在LogError函数中写入任何内容,现在它只是存根代码。这正是启动屏幕刮板的代码吗?如果您在后台线程和tr中运行此代码y/catch位于主线程上,然后您将得到您得到的结果。上面的代码在LogError中缺少一个右括号(例如:ToString();(它永远不会编译)。这正是启动screen scraper的代码吗?如果您在后台线程中运行此代码,并且try/catch在主线程上,那么您将得到您得到的结果。上面的代码在LogError中缺少一个右括号(例如。ToString();(它永远不会编译)。