【发布时间】:2010-11-16 11:52:33
【问题描述】:
我有一个混合了 Winforms 和 WPF 的应用程序。在 Winforms 中,我有一个全局异常处理程序,定义如下:
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
这总是在我的应用程序中的任何地方捕获异常,这些异常发生在预期之外并没有得到妥善处理。
对于 WPF,我似乎能够捕捉到的是:
wpfAppDomain = new System.Windows.Application();
wpfAppDomain.DispatcherUnhandledException +=
wpfAppDomain_DispatcherUnhandledException;
这并不总能捕获全局异常,我经常发现异常在某处被吞没了,我不知道为什么。
如何为 WPF 创建一个全局异常处理程序,以捕获发生的任何未处理的异常?
【问题讨论】:
-
您是在 Visual Studio 中还是在可执行文件上进行测试? Visual Studio 将尝试捕获一些异常并中断您的应用程序执行。
-
谁抛出了这个异常?如果 John Skeet 做到了,你就抓不住它;)
-
我永远不会试图从伟大而强大的 John Skeet 那里捕捉任何异常。
-
@Zyphrax,如果我幸运的话,在某些情况下 VS 会显示异常,但可执行文件很少这样做。我有全局异常处理,所以如果出现问题,我可以提示用户提供一些详细信息,然后向我报告血腥的堆栈跟踪,而不会让用户遇到粗鲁的应用程序崩溃。
标签: c# wpf winforms .net-3.5 exception-handling