当前位置: 首页 > news >正文

WPF捕获程序报错记录日志

1、直接在App.Xaml.cs里面重写OnStartup方法 具体代码如下

  protected override void OnStartup(StartupEventArgs e){//在异常由应用程序引发但未进行处理时发生。UI线程//无法捕获多线程异常DispatcherUnhandledException += App_DispatcherUnhandledException;//专门捕获所有线程中的异常AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;//专门捕获Task异常TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;base.OnStartup(e);}private void TaskScheduler_UnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e){MessageBox.Show(e.Exception.Message, "消息", MessageBoxButton.OK, MessageBoxImage.Error);e.SetObserved();// 获取完整异常信息string errorMessage = GetDetailedExceptionInfo(e.Exception);Log(errorMessage);}private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e){MessageBox.Show((e.ExceptionObject as Exception).Message, "消息", MessageBoxButton.OK, MessageBoxImage.Error);// 获取完整异常信息string errorMessage = GetDetailedExceptionInfo(e.ExceptionObject as Exception);Log(errorMessage);}private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e){e.Handled = true;MessageBox.Show(e.Exception.Message, "消息", MessageBoxButton.OK, MessageBoxImage.Error);// 获取完整异常信息string errorMessage = GetDetailedExceptionInfo(e.Exception);Log(errorMessage);}/// <summary>/// 获取异常的详细信息(包括堆栈跟踪和内部异常)/// </summary>private string GetDetailedExceptionInfo(Exception ex){var sb = new System.Text.StringBuilder();// 记录异常类型和消息sb.AppendLine($"异常类型: {ex.GetType().FullName}");sb.AppendLine($"异常消息: {ex.Message}");// 记录堆栈跟踪(去除多余空格)if (!string.IsNullOrEmpty(ex.StackTrace)){sb.AppendLine("堆栈跟踪:");sb.AppendLine(ex.StackTrace.Trim());}// 递归记录内部异常if (ex.InnerException != null){sb.AppendLine("\n--- 内部异常 ---");sb.AppendLine(GetDetailedExceptionInfo(ex.InnerException));}return sb.ToString();}/// <summary>/// 记录日志/// </summary>private void Log(string Mesgg){string fileName = $"{AppDomain.CurrentDomain.BaseDirectory}Log\\{DateTime.Now.ToString("yyyy-MM-dd")}";if (!Directory.Exists(fileName)){Directory.CreateDirectory(fileName);}File.AppendAllText($"{fileName}\\LogInformation.txt", $"{Mesgg}\r\n");// MessageBox.Show($"更新程序错误,具体错误信息查询:{fileName} 文件日志", "错误", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);}

 

http://www.jsqmd.com/news/164680/

相关文章:

  • Comparator与Comparable有什么区别
  • Chrome离线版本下载与免安装版本
  • 终极指南:如何用DeepLabCut实现AI姿势识别与动物行为分析
  • Chrome离线版本下载与免安装版本
  • 一个典型的HTTP请求由以下几部分组成:
  • Betaflight竞速电调同步技术深度剖析
  • LINQ中的延迟执行(Deferred Execution)和立即执行(Immediate Execution)
  • ECharts Timeline 组件完整教程:构建动态数据可视化的终极指南
  • 食品铝箔袋专业厂家:可降解食品铝箔袋的优质之选 - 工业品网
  • 2025年防雷连接线夹厂家权威推荐榜单:铜绞线线夹/防雷接地线夹/黄铜线夹/打造全息餐厅酒店/接地线夹源头厂家精选 - 品牌推荐官
  • 前端 + AI 进阶 Day8 : 批量图片 AI 分析
  • CameraKit-Android 终极指南:快速构建稳定可靠的Android相机应用
  • Scrypted完整攻略:打造跨平台智能监控系统
  • 无名杀项目终极指南:15分钟从入门到精通
  • 纯手改AI率反而更高?硬核降AI实测指南:6款工具助你过关 - 老米_专讲AIGC率
  • 图书在线阅读系统的设计与实现外文
  • 2025年电力保护核心设备供应商盘点:如何选择技术扎实的长期伙伴? - 2025年品牌推荐榜
  • 传统安全框架已经在AI攻击浪潮中全面失效,合规≠安全的底层逻辑与破局之路
  • 一键双降:学术写作中重复率与AIGC风险的协同应对策略
  • 妇产科高级职称考试培训如何选?这几点值得关注 - 资讯焦点
  • 2025年气象站设备厂家推荐榜:山东万象环境科技,农业/超声波/森林/便携式气象站全系供应 - 品牌推荐官
  • 【算法基础篇】(三十九)数论之从质数判定到高效筛法:质数相关核心技能全解析
  • 2026微信立减金回收,警惕三大认知误区 - 京顺回收
  • 精准分级:智能化学术写作中的个性化适配机制
  • 三家主流妇产科副高培训测评:服务与课程深度解析 - 资讯焦点
  • http核心作用是什么?作用在参考模型中的哪一层?
  • JFlash怎么烧录程序:适用于工控系统的图解说明
  • 2026初级药师备考软件用哪个:三款高效之选 - 资讯焦点
  • Vivado使用实战:手把手实现FPGA流水灯项目
  • 2025年酱菜瓶生产厂家实力推荐:徐州稳健玻璃制品有限公司,玻璃/六棱/高盖/圆柱酱菜瓶全系供应 - 品牌推荐官