我有一个混合了Winforms和WPF的应用程序。在Winforms中,我有一个全局异常处理程序,它的定义如下:
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;这总是捕获我的应用程序中任何地方发生的异常,这些异常都不是预期的,并且处理得很好。
对于WPF,我所能捕获的似乎是:
wpfAppDomain = new System.Windows.Application();
wpfAppDomain.DispatcherUnhandledException +=
wpfAppDomain_DispatcherUnhandledException;这并不总是捕获全局异常,我经常发现异常在某个地方被吞噬,我不确定为什么。
如何为WPF创建全局异常处理程序,以便捕获发生的任何未处理的异常?
发布于 2009-08-03 20:06:05
在某些情况下,此代码不会捕获异常,而这是设计好的
没有办法捕获所有抛出的异常。这样做将允许您违反本应始终有效的代码的语义。
发布于 2009-08-03 20:11:35
在调用SetUnhandledExceptionMode之后,你有没有尝试过?如下所示:
// Force all exceptions through our handler.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);发布于 2009-08-04 11:05:46
DispatcherUnhandledException只捕获调度程序调用的代码中的异常(顾名思义),它应该捕获从WPF代码调用时抛出的异常。
它不包括从以下位置抛出的异常: WinForms、BackgroundWorker、线程池或您自己启动的线程。
您仍然可以使用AppDomain.CurrentDomain.UnhandledException来捕获它们。
https://stackoverflow.com/questions/1224303
复制相似问题