1   static class Program
 2     {
 3         /// <summary>
 4         /// 应用程序的主入口点。
 5         /// </summary>
 6         [STAThread]
 7         static void Main()
 8         {
 9             try
10             {
11
12                 //添加事件处理程序未捕获的异常
13                 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
14                 //添加事件处理UI线程异常
15                 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
16                 //添加事件处理非UI线程异常
17                 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
18
19
20                 Application.EnableVisualStyles();
21                 Application.SetCompatibleTextRenderingDefault(false);
22                 Application.Run(new FrmActivity());
23             }
24             catch (Exception ex)
25             {
26                 string str = "";
27                 string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
28
29                 if (ex != null)
30                 {
31                     str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
32                          ex.GetType().Name, ex.Message, ex.StackTrace);
33                 }
34                 else
35                 {
36                     str = string.Format("应用程序线程错误:{0}", ex);
37                 }
38
39                 //写日志
40                 WriteLog.WriteErrLog(str);
41                 MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
42             }
43
44         }
45
46         /// <summary>
47         ///这就是我们要在发生未处理异常时处理的方法,做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
48         /// </summary>
49         /// <param name="sender"></param>
50         /// <param name="e"></param>
51         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
52         {
53
54             string str = "";
55             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
56             Exception error = e.Exception as Exception;
57             if (error != null)
58             {
59                 str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
60                      error.GetType().Name, error.Message, error.StackTrace);
61             }
62             else
63             {
64                 str = string.Format("应用程序线程错误:{0}", e);
65             }
66             //写日志
67             WriteLog.WriteErrLog(str);
68             MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
69         }
70         /// <summary>
71         ///  ' 处理UI异常
72         /// </summary>
73         /// <param name="sender"></param>
74         /// <param name="e"></param>
75         static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
76         {
77             string str = "";
78             Exception error = e.ExceptionObject as Exception;
79             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
80             if (error != null)
81             {
82                 str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
83             }
84             else
85             {
86                 str = string.Format("Application UnhandledError:{0}", e);
87             }
88             //写日志
89             WriteLog.WriteErrLog(str);
90             MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
91         }
92
93     }

转载于:https://www.cnblogs.com/thirst/p/4153798.html

WinForm C#全局错误捕捉处理【整理】相关推荐

  1. 热键枚举Winform程序全局热键与局部热键(键盘快捷键的捕获)

    最近研究热键枚举,稍微总结一下,以后继续补充: Winform程序全局热键 Winform程序全局热键一般采取的是,调用windows api的情势,主要是通过面下的四个函数 /// <summ ...

  2. Java全局异常捕捉

    1.场景还原 在项目开发中,对于各种异常都有不同的报错提示或策略,无疑对于用户或者开发来说,是一个很好的用户体验:如何在java定义一个全局异常捕捉呢? 2.实现方案 2.1 自定义一个业务异常类 @ ...

  3. spring boot 四:全局异常捕捉

    spring boot 四:全局异常捕捉 1 前言 希望定制错误,比如一般springboot的500错误展示如下(trace等可以通过配置application.yml来决定隐藏还是具有): app ...

  4. java powershell出错_PowerShell全局错误处理机制处理脚本错误或异常

    类型:音频处理大小:1M语言:中文 评分:5.1 标签: 立即下载 没有任何脚本或程序能够保证在任何情况下毫无错误地执行,在外界条件变化的情况下,需要预防可能出错之处.本文将介绍PowerShell如 ...

  5. php中的全局异常,PHP的全局错误处理详解

    本文目的 PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率.默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错 ...

  6. Spring MVC集成测试:断言给定的模型属性有全局错误

    为了使用Bean验证报告Spring MVC中的全局错误,我们可以创建一个自定义的类级别约束注释. 全局错误与已验证Bean中的任何特定字段都不相关. 在本文中,我将展示如何使用Spring Test ...

  7. 在SQL Server2005中进行错误捕捉

    任何程序都可能出现错误,在SQL Server中执行Transact-SQL也不例外.如果在Transact-SQL中发生了错误,一般有两种捕捉错误的方法,一种是在客户端代码(如 c#.delphi等 ...

  8. VBA 自动关闭 弹出的对话框 + VBA错误捕捉

    自动关闭 Msgbox对话框: Private Declare Function MsgBoxEx Lib "user32" Alias "MessageBoxTimeo ...

  9. matlab 如何捕捉错误,【matlab|matlab运行错误捕捉方法】

    『傻大方知识库摘要_matlab|matlab运行错误捕捉方法』需安装VC2005运行库.Matlab错误提示往往以DOS窗口显示,错误提示经常一闪而过,无法查看具体错误信息,可以按照如下操作进行查看 ...

最新文章

  1. LeetCode之Sort List
  2. B-Tree 和 B+Tree
  3. UA MATH567 高维统计I 概率不等式9 亚高斯性的推广:Orlicz空间与Orlicz范数
  4. vscode怎么设置默认浏览器?(不成功)
  5. SAP CRM SPRO Customizing 里 Text Object 属性 continue 的含义
  6. IDEA项目找不到浏览器报错的情况
  7. APP价格标签页面设计灵感!明码标价!
  8. 设计资源类网站|日常必逛设计导航
  9. ShadeGraph教程之节点详解6:Procedural Nodes
  10. 从零(0)开始计数与从 1 开始计数
  11. Flutter的Chip标签组件
  12. python获取子窗口句柄
  13. JxBrowser的概述与简单应用
  14. 软件测试工程师经典面试题
  15. Mixly Aduino 超声波~蜂鸣器
  16. Node中间件multer库学习
  17. python合成gif动图
  18. 中专计算机英语听课记录,【听课记录15篇及评析】_英语听课记录及评析_英语听课记录及评析范文5篇...
  19. P3840蜗牛一期--虚拟局域网VLAN
  20. 行满秩矩阵为何变成增广矩阵还为满秩

热门文章

  1. php计算结果排序,php-按从数组计算出的值对数组进行排序
  2. python中怎么创建配置文件_如何在Django中创建配置文件注册表单?
  3. 机器人最新天赋符文天赋加点图_常德2020中小学机器人竞赛开赛 286名选手现场比拼技能...
  4. linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解
  5. 河南理工大学c语言报告封面,河南理工大学图书信息管理系统设计_纯c语言课程设计.doc...
  6. cross join 一张表没有值关联不出来数据_你是否还在对left join、right join和join有困扰呢?...
  7. 《c#编程语言详解》,C#编程语言详解(第2版)
  8. C语言(CED)判断一个数是否是2的整数幂的简便方法!
  9. java session 详解
  10. 显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理