当前位置: 首页 > 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.zskr.cn/news/180166.html

相关文章:

  • 2025年节能环保滤清器生产厂家权威推荐榜单:锅炉节能环保/重卡节能环保/半挂车节能环保/节能环保过滤器/龙邦节能环保助燃器源头厂家精选 - 品牌推荐官
  • Java中的基本数据类型有哪些?它们的大小是多少?
  • Chrome离线版本下载与免安装版本
  • 终极指南:如何用DeepLabCut实现AI姿势识别与动物行为分析
  • 一个典型的HTTP请求由以下几部分组成:
  • Betaflight竞速电调同步技术深度剖析
  • 百考通AI:学术写作全流程智能辅助的深度探索
  • ADS2011完整安装指南:从下载到配置全流程解析
  • 2025年防雷连接线夹厂家权威推荐榜单:铜绞线线夹/防雷接地线夹/黄铜线夹/打造全息餐厅酒店/接地线夹源头厂家精选 - 品牌推荐官
  • 前端 + AI 进阶 Day8 : 批量图片 AI 分析
  • 无名杀项目终极指南:15分钟从入门到精通
  • 纯手改AI率反而更高?硬核降AI实测指南:6款工具助你过关 - 老米_专讲AIGC率
  • 传统安全框架已经在AI攻击浪潮中全面失效,合规≠安全的底层逻辑与破局之路
  • 2026微信立减金回收,警惕三大认知误区 - 京顺回收
  • 2025年气象站设备厂家推荐榜:山东万象环境科技,农业/超声波/森林/便携式气象站全系供应 - 品牌推荐官
  • 三家主流妇产科副高培训测评:服务与课程深度解析 - 资讯焦点
  • http核心作用是什么?作用在参考模型中的哪一层?
  • Vivado使用实战:手把手实现FPGA流水灯项目
  • Miniconda环境健康检查脚本编写
  • 2025年酱菜瓶生产厂家实力推荐:徐州稳健玻璃制品有限公司,玻璃/六棱/高盖/圆柱酱菜瓶全系供应 - 品牌推荐官
  • 2025安全团队硬核清单:40款开源工具全覆盖,从攻防实战到前瞻防护
  • AI自主猎杀10分漏洞!CVE-2025-54322撕开全球网络设备防线,攻防格局迎颠覆性变革
  • 毕业焦虑?别慌!让AI工具成为你的“学术副驾”,高效搞定论文全流程
  • 主治医师考试培训机构综合实力与特色解析 - 资讯焦点
  • 图书在线阅读系统的设计与实现任务书
  • 2026年下沉城市广告行业怎么经营?这5种模式总有一种适合你的 - 资讯焦点
  • JupyterHub集成Miniconda支持多用户AI开发
  • 自组织特征映射(SOM)的数据聚类程序。 matlab程序 数据格式为excel
  • 网络监控软件的探讨分析与实现开题报告模板(1)
  • 告别手绘时代:代码驱动神经网络可视化新体验