【发布时间】:2013-06-16 16:48:39
【问题描述】:
我正在开发一个使用普通 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; -
这里有一些详尽的解释:stackoverflow.com/questions/1472498/…
标签: c# wpf unhandled-exception