随笔 - 7  文章 - 58  评论 - 2  阅读 - 22412

wpf异常捕获

复制代码
 protected override void OnStartup(StartupEventArgs e)
 {
     Trace.Listeners.Add(new TextWriterTraceListener("ErrorLog.txt"));
     Trace.AutoFlush = true;
     AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
     Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
     TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
     base.OnStartup(e);
 }

 private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
 {
     // 主线程UI异常
     Trace.TraceError($"主线程UI异常" +e.Exception.ToString());

     // Prevent default unhandled exception processing
     e.Handled = true;
 }

 private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
 {
     // UnhandledException 其他线程上的异常
     //AppDomain.CurrentDomain.UnhandledException事件处理程序通常用于记录未处理的异常信息,而不是阻止应用程序关闭。当AppDomain.CurrentDomain.UnhandledException事件被触发时,
     //通常意味着应用程序处于不稳定的状态,
     //所以.NET Framework的默认行为是关闭应用程序
     Trace.TraceError($"其他线程上的异常" + (e.ExceptionObject as Exception).ToString());
     
 }

 private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
 {
     //应用程序使用了Task或者async/await,那么你应该处理这个事件
     Trace.TraceError($"应用程序使用了Task或者async/await" + e.Exception.ToString());

     // 调用e.SetObserved()来阻止异常终止进程
     e.SetObserved();
 }
复制代码

 

posted on   詠吥誩棄  阅读(20)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示