有时,在不可重现的情况下,我的WPF应用程序崩溃而没有任何消息。应用程序只需立即关闭。
Where是实现全局Try/Catch块的最佳位置。至少我必须实现一个信箱:“很抱歉给您带来不便……”
发布于 2009-09-24 15:43:07
您可以处理AppDomain.UnhandledException事件
编辑:实际上,这个事件可能更合适:Application.DispatcherUnhandledException
发布于 2009-09-24 15:49:22
您可以在不同级别捕获未处理的异常:
从AppDomain.
Dispatcher.UnhandledException中的所有线程从单个特定的UI调度器thread.
Application.Current.DispatcherUnhandledException从WPF application.
TaskScheduler.UnobservedTaskException中的主UI调度器线程从使用任务计划程序进行异步操作的每个AppDomain中执行AppDomain.CurrentDomain.UnhandledException。您应该考虑需要在什么级别捕获未处理的异常。
在#2和#3之间做出决定取决于您是否使用了多个WPF线程。这是一种非常奇特的情况,如果你不确定自己是不是,那么很可能你不是。
发布于 2011-03-23 14:13:41
下面是Application.Dispatcher.UnhandledException代码的快速示例:
public App() {
this.Dispatcher.UnhandledException += OnDispatcherUnhandledException;
}
void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) {
string errorMessage = string.Format("An unhandled exception occurred: {0}", e.Exception.Message);
MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
// OR whatever you want like logging etc. MessageBox it's just example
// for quick debugging etc.
e.Handled = true;
}我在App.xaml.cs中添加了这段代码
https://stackoverflow.com/questions/1472498
复制相似问题