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

本文关键字:继续 异常 winforms 未处理 为什么 | 更新日期: 2023-09-27 17:52:33

我最近改用这种方式处理未处理的异常:

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

这将是很好的记录和什么不是,但我已经失去了旧的未处理的异常框的能力,以'继续'。我当前的处理程序只是提示重新启动。很多时候,在未处理的异常框中单击continue实际上可以使程序正常运行。这是如何工作的呢?是否有一种方法可以允许"继续"与我现在捕获未处理异常的方式?假设异常是某种类型的,我可以尝试"继续",就像未处理的异常框一样?或者这是不可能的?

有人了解异常世界的具体细节吗?

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

应用程序终止,因为这是CLR的默认行为。如果你有一个未处理的异常,这意味着你的程序有一个严重的缺陷,最好的处理方法是关闭整个应用程序。

但是,如果您希望在此类未处理的异常之后继续执行,可以使用一种技术。您可以在应用程序中创建第二个域并在其中加载库。不同应用程序域中的异常是独立的。查看我的博客条目,这里有一些示例代码。