我正在开发一个使用 plain 实现的项目threads
。应用程序中的大多数预期异常都得到了处理,但是,在某些情况下,其中一个线程抛出了意外异常并且应用程序只是崩溃了(应用程序既是基于I/O
也是Client-Server
基于的,因此实际上不可能处理所有异常)。
为了解决这个问题,我试图定义一个全局UnhandledExceptionHandler
,以便应用程序显示友好的消息而不是崩溃。这是我尝试过的:
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// The rest of the startup logic goes here
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Utilities.DisplayUnhandledException((Exception)e.ExceptionObject);
}
}
但这不起作用。CurrentDomain_UnhandledException
永远不会被调用。不幸的是,我无法更改应用程序的结构,这意味着我无法使用任务并行库。我不明白为什么这不起作用。有没有其他方法来处理线程中抛出的异常?任何帮助表示赞赏。