WPF全局异常处理程序

这个问题在这里已经有了答案:

  • 在WPF应用程序中全局捕获异常? 6个答案

  • 您可以处理AppDomain.UnhandledException事件

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


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

  • AppDomain.CurrentDomain.UnhandledException所有线程。
  • Dispatcher.UnhandledException从一个特定的UI调度程序线程。
  • Application.Current.DispatcherUnhandledException从您的WPF应用程序中的主UI调度程序线程。
  • 每个使用任务调度程序进行异步操作的AppDomain中的TaskScheduler.UnobservedTaskException
  • 您应该考虑在什么级别捕捉未处理的异常。

    决定#2和#3取决于您是否使用多个WPF线程。 这是一个非常异乎寻常的情况,如果你不确定你是不是,那很可能你不是。


    Application.Dispatcher.UnhandledException的代码的一个简单示例:

        public App() :base() {
            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);
            e.Handled = true;
        }
    

    我在App.xaml.cs中添加了这段代码

    链接地址: http://www.djcxy.com/p/5941.html

    上一篇: WPF global exception handler

    下一篇: Register NSURLProtocol (URLProtocol) class for use with external app?