首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF全局异常处理程序

WPF全局异常处理程序
EN

Stack Overflow用户
提问于 2009-09-24 15:40:01
回答 9查看 169.7K关注 0票数 359

有时,在不可重现的情况下,我的WPF应用程序崩溃而没有任何消息。应用程序只需立即关闭。

Where是实现全局Try/Catch块的最佳位置。至少我必须实现一个信箱:“很抱歉给您带来不便……”

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-09-24 15:43:07

您可以处理AppDomain.UnhandledException事件

编辑:实际上,这个事件可能更合适:Application.DispatcherUnhandledException

票数 172
EN

Stack Overflow用户

发布于 2009-09-24 15:49:22

您可以在不同级别捕获未处理的异常:

从AppDomain.

  • Dispatcher.UnhandledException中的所有线程从单个特定的UI调度器thread.

  • Application.Current.DispatcherUnhandledException从WPF application.

  • TaskScheduler.UnobservedTaskException中的主UI调度器线程从使用任务计划程序进行异步操作的每个AppDomain中执行
  1. AppDomain.CurrentDomain.UnhandledException

您应该考虑需要在什么级别捕获未处理的异常。

在#2和#3之间做出决定取决于您是否使用了多个WPF线程。这是一种非常奇特的情况,如果你不确定自己是不是,那么很可能你不是。

票数 535
EN

Stack Overflow用户

发布于 2011-03-23 14:13:41

下面是Application.Dispatcher.UnhandledException代码的快速示例:

代码语言:javascript
复制
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中添加了这段代码

票数 131
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1472498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档