【发布时间】:2010-07-10 08:22:08
【问题描述】:
我想用 C# 在我的 UI 应用程序中捕获所有未处理的异常,以便我可以记录它们、通过邮件发送它们并重新启动应用程序。
我怎样才能简单地完成这项工作?我试过了:
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainDlg());
}
catch (Exception e)
{
Logger.Log(e);
Logger.PostLog();
System.Diagnostics.Process.Start("App.exe");
}
但它允许一些异常通过。
【问题讨论】:
-
使用这样的方法,有一个极端情况是您的应用程序在启动时出现异常而崩溃,然后重新启动只是再次崩溃。用户的应用程序会非常快速地重新启动,即使使用任务管理器也很难杀死。这对大多数用户来说都是个问题。您可能希望使用某种计数器机制来防止这种情况发生,尽管这当然可能会再次引发异常。对于该机制,如果发生任何异常,则抛出特定异常,该异常不会由重新启动应用程序的异常处理程序处理。
-
@FrederikB:感谢您指出这个设计缺陷。
标签: c# exception message-pump