static class Program
     {
         /// <summary>
         /// 应用程序的主入口点。
         /// </summary>
         [STAThread]
         static void Main()
         {
             try
             {
                 //设置应用程序处理异常方式:ThreadException处理
                 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                 //处理UI线程异常
                 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                 //处理非UI线程异常
                 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
 
                 #region 应用程序的主入口点
                 Application.EnableVisualStyles();
                 Application.SetCompatibleTextRenderingDefault(false);
                 Application.Run(new Form1());
                 #endregion
             }
             catch (Exception ex)
             {
                 string str = GetExceptionMsg(ex,string.Empty);
                 MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
 
 
         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
         {
             string str = GetExceptionMsg(e.Exception, e.ToString());
             MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
             //LogManager.WriteLog(str);
         }
 
         static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
         {
             string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
             MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
             //LogManager.WriteLog(str);
         }
 
         /// <summary>
         /// 生成自定义异常消息
         /// </summary>
         /// <param name="ex">异常对象</param>
         /// <param name="backStr">备用异常消息:当ex为null时有效</param>
         /// <returns>异常字符串文本</returns>
         static string GetExceptionMsg(Exception ex,string backStr)
         {
             StringBuilder sb = new StringBuilder();
             sb.AppendLine("****************************异常文本****************************");
             sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
             if (ex != null)
             {               
                 sb.AppendLine("【异常类型】:" + ex.GetType().Name);
                 sb.AppendLine("【异常信息】:" + ex.Message);
                 sb.AppendLine("【堆栈调用】:" + ex.StackTrace);

sb.AppendLine("【异常方法】:" + ex.TargetSite);

}
             else
             {
                 sb.AppendLine("【未处理异常】:" + backStr);
             }
             sb.AppendLine("***************************************************************");
             return sb.ToString();
         }
     }

C# WinForm捕获全局异常相关推荐

  1. 【改进】C# WinForm捕获全局异常 SamWang

    许多小公司的项目都缺少异常处理模块,我们也是.经常会出现这种情况,用户在UI界面操作,就直接跳出堆栈调用的异常信息对话框,老板看到那叫一个火啊!你们的代码怎么天天出现乱码.呵呵!这就是没有异常捕获处理 ...

  2. WinForm捕获全局异常(捕获未处理的异常)

    背景 我们在做WinForm程序的时候,一般都是对异常进行处理,但是,我们要防止不小心出现未知异常,导致软件崩溃.也可采集系统未知的异常信息,防止出现异常,也无法下手.于是就有了如这篇文章标题所述的一 ...

  3. C# winform 捕获全局异常

    using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespa ...

  4. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  5. PHP 捕获全局异常

    PHP 捕获全局异常 参考文章: (1)PHP 捕获全局异常 (2)https://www.cnblogs.com/yaomao/p/11260388.html (3)https://www.java ...

  6. express捕获全局异常的三种方法

    express捕获全局异常的三种方法 参考文章: (1)express捕获全局异常的三种方法 (2)https://www.cnblogs.com/chenqionghe/p/11349521.htm ...

  7. android捕获全局异常,并对异常做出处理

    2019独角兽企业重金招聘Python工程师标准>>> 在做项目时,经常会把错误利用异常抛出去,这样在开发时就可以通过手机抛的异常排查错误,很方便.但是当程序开发完毕,版本稳定,需要 ...

  8. Springboot捕获全局异常:MethodArgumentNotValidException

    Springboot捕获全局异常:MethodArgumentNotValidException 控制器 方法上添加@Valid注解 @PostMapping("/update") ...

  9. springboot怎么捕获全局异常

    学习目标: java中的异常和错误 学习内容: 首页要了解什么是异常什么是错误 捕捉全局异常 自定义异常 一.java中异常和错误的区别 Error类和Exception类的父类都是throwable ...

  10. winform程序捕获全局异常,对错误信息写入日志并弹窗

    使用场景:在winform程序中如果没对方法进行try catch操作,若方法内出错,则整个程序报错并退出,如下图 如果程序已在客户手中,若没对错误的详细信息进行拍照,我们则不知道错误原因是什么.我们 ...

最新文章

  1. java信息格式化,Java如何格式化包含时间信息的消息?
  2. oracle sqlcode 多条,SQL查询以连接Oracle中多个行的列值
  3. 最长公共子序列LCS
  4. 几种常用控件的使用方法
  5. 扎实的基础是成功的法宝
  6. LeetCode 1833. 雪糕的最大数量(贪心)
  7. java direct memory_第一讲  JVM内存四大类型:Heap,Stack,Contant,DirectMemory等
  8. POD 创建 Xcode 项目组
  9. 一个简单mvp安卓应用的设计
  10. Axure RP 9(附授权码+安装教程)
  11. Python3.7安装教程
  12. 如何根据经纬度获取地址名称
  13. 国科大学习资料–模式识别--精练考点
  14. 多看系统kindle最新版_谁说电气造价难?这样系统梳理一下简单多了!小白必看...
  15. xmpp学习使用简单介绍(二)
  16. 一文搞懂H264量化原理以及计算过程
  17. 前端案例——2.仿淘宝关闭二维码案例
  18. OOP上半部分-Java与生活
  19. CDN加速,App与Big-man
  20. 阿里云学生机搭建spark、hadoop集群(踩坑之路)

热门文章

  1. php 便利字符串,Go语言遍历字符串——获取每一个字符串元素
  2. cmd怎么导入mysql文件,使用cmd工具如何导入大容量sql文件到mysql数据库
  3. matlab中firrcos,DMR数字集群关键技术的应用研究
  4. Java对Json文件中数据排序_[Java教程]js之封装sort实现json格式数据的排序
  5. 违章查询源码 php,PHP教程:php车辆违章查询数据示例
  6. 大数据平台搭建_【他山之石】自研搭建Hadoop数据科学开发环境,促进大数据平台建设降本增效...
  7. php mb strimwidth,如何解决WordPress内置函数mb_strimwidth()不能用问题?
  8. 云鲸扫拖一体机器人说明书_云鲸小白鲸扫拖一体机器人好用吗?真实的测评带你走进智能化家居时代...
  9. es 怎么验证是否安装成功_ElasticSearch(ES)预警服务 Watcher安装以及探究
  10. Mac的一些使用技巧