为什么winforms未处理的异常框有时会继续?

时间:2011-04-24 07:10:57

标签: c# winforms exception

我最近以这种方式切换到处理未处理的异常:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

这对于日志记录很有用,但是没有,但是我已经失去了旧的未处理异常框“继续”的能力。我当前的处理程序只是提示重启。很多时候,在未处理的异常框中单击“继续”实际上会使程序运行正常。这是如何运作的?有没有办法让我继续“继续”我现在捕捉未处理的异常的方式?如果异常属于某种类型,我可以像未处理的异常框一样尝试“继续”吗?或者这不可能吗?

那里有人了解异常世界的具体细节吗?很想听听你们这些家伙的想法。

1 个答案:

答案 0 :(得分:2)

应用程序已终止,因为这是CLR的默认行为。如果您有一个未处理的异常,这意味着您的程序存在严重缺陷,对此类情况的最佳处理方法是关闭整个应用程序。

但是,如果您想在此类未处理的异常之后继续,则有一种技术。您可以在应用程序中创建第二个域并在其中加载库。不同应用领域内的例外情况是独立的。查看我的blog entry,有一些示例代码可用。