从Application.Run()捕获异常

时间:2014-03-10 08:50:45

标签: c# winforms

我的项目中有这个标准代码:

try {
    myForm = new MyForm();
    Application.Run(myForm);
} catch (Exception e) {
    // handle all uncaught exceptions
}

但是,当我的程序中某处出现未处理的异常时,它仍会显示“默认”异常处理程序,并且我的catch永远不会被命中。我想将某些致命错误处理为已知的致命错误(例如,连接丢失)。

2 个答案:

答案 0 :(得分:1)

一种可能性是AppDomain.UnhandledException。在这里查看更多详细信息:

此外,这是一篇较旧的 - 但仍然很优秀的文章:

答案 1 :(得分:0)

你可以试试这样的事情

 myForm = new MyForm();
 Application.Run(myForm);
 Application.ThreadException +=
         new ThreadExceptionEventHandler(Application_ThreadException);

然后像这样使用此事件

    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
      try
      {
          // Your code
      }
     catch (Exception ex)
     {
          // your code
     }
   }