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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)