wpf 捕獲全域性異常

Hey,Coder!發表於2024-05-29
  App()
  {
      this.Startup += App_Startup;
  }

  private void App_Startup(object sender, StartupEventArgs e)
  {
      this.DispatcherUnhandledException += App_DispatcherUnhandledException;
      AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
      TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
  }

  //主執行緒未處理異常
  private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
  {
      //HandyControl.Controls.Growl.Error($"應用程式遇到未處理的異常:{e.Exception.Message}");
      e.Handled = true;
  }

  //未處理執行緒異常(如果主執行緒未處理異常已經處理,該異常不會觸發)
  private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
  {
      if (e.ExceptionObject is Exception ex)
      {
          //HandyControl.Controls.Growl.Error($"應用程式遇到未處理的異常:{ex.Message}");
      }
  }

  //未處理的Task內異常
  private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
  {
      //HandyControl.Controls.Growl.Error($"應用程式遇到未處理的異常:{e.Exception.Message}");
  }

相關文章