我正在使用普通的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
永远不会被调用。不幸的是,我无法改变应用程序的结构,这意味着我无法使用任务并行库。我无法弄清楚为什么这不起作用。有没有其他方法来处理线程中抛出的异常?任何帮助表示赞赏。
尝试'Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);'和'Application.ThreadException + = Application_ThreadException;' – Blorgbeard
这里有一些彻底的解释:http://stackoverflow.com/questions/1472498/wpf-global-exception-handler –