Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的异常处理代码不处理异常?_C#_Asp.net - Fatal编程技术网

C# 为什么我的异常处理代码不处理异常?

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

我有一些C#代码,可以使用HttpWebRequest类关闭远程网站。我正在使用try/catch处理错误,但某些错误(如Webrequest和IOException)似乎没有通过我的设置方式被“捕获”:

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();(它永远不会编译)。