在程序入口添加代码

namespace MainForm
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show(e.ExceptionObject.ToString());
        }
        static void Main()
        {
            try
            {
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
                
            }
            catch(Exception e)
            {
 
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
第二个方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Text;
using log4net;
 
namespace TestLog4Net
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            BindExceptionHandler();//绑定程序中的异常处理
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        /// <summary>
        /// 绑定程序中的异常处理
        /// </summary>
        private static void BindExceptionHandler()
        {
            //设置应用程序处理异常方式:ThreadException处理
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            //处理UI线程异常
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            //处理未捕获的异常
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        }
        /// <summary>
        /// 处理UI线程异常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.ToString());
        }
        /// <summary>
        /// 处理未捕获的异常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show(e.ExceptionObject.ToString());

//**************

 1     static class Program2     {3         /// <summary>4         /// 应用程序的主入口点。5         /// </summary>6         [STAThread]7         static void Main()8         {9             try
10             {
11                 //设置应用程序处理异常方式:ThreadException处理
12                 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
13                 //处理UI线程异常
14                 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
15                 //处理非UI线程异常
16                 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
17
18                 #region 应用程序的主入口点
19                 Application.EnableVisualStyles();
20                 Application.SetCompatibleTextRenderingDefault(false);
21                 Application.Run(new Form1());
22                 #endregion
23             }
24             catch (Exception ex)
25             {
26                 string str = GetExceptionMsg(ex,string.Empty);
27                 MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
28             }
29         }
30
31
32         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
33         {
34             string str = GetExceptionMsg(e.Exception, e.ToString());
35             MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
36             //LogManager.WriteLog(str);
37         }
38
39         static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
40         {
41             string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
42             MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
43             //LogManager.WriteLog(str);
44         }
45
46         /// <summary>
47         /// 生成自定义异常消息
48         /// </summary>
49         /// <param name="ex">异常对象</param>
50         /// <param name="backStr">备用异常消息:当ex为null时有效</param>
51         /// <returns>异常字符串文本</returns>
52         static string GetExceptionMsg(Exception ex,string backStr)
53         {
54             StringBuilder sb = new StringBuilder();
55             sb.AppendLine("****************************异常文本****************************");
56             sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
57             if (ex != null)
58             {
59                 sb.AppendLine("【异常类型】:" + ex.GetType().Name);
60                 sb.AppendLine("【异常信息】:" + ex.Message);
61                 sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
62             }
63             else
64             {
65                 sb.AppendLine("【未处理异常】:" + backStr);
66             }
67             sb.AppendLine("***************************************************************");
68             return sb.ToString();
69         }
70     }

参考:

 1 static class Program2 {3     /// <summary>4     /// 应用程序的主入口点。5     /// </summary>6     [STAThread]7     static void Main()8     {9         try
10         {
11             //处理未捕获的异常
12             Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
13             //处理UI线程异常
14             Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
15             //处理非UI线程异常
16             AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
17
18             #region 应用程序的主入口点
19
20             Application.EnableVisualStyles();
21             Application.SetCompatibleTextRenderingDefault(false);
22             Application.Run(new Main());
23
24             #endregion
25
26         }
27         catch (Exception ex)
28         {
29             string str = "";
30             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
31
32             if (ex != null)
33             {
34                 str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
35                 ex.GetType().Name, ex.Message, ex.StackTrace);
36             }
37             else
38             {
39                 str = string.Format("应用程序线程错误:{0}", ex);
40             }
41
42             //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
43             LogManager.WriteLog(str);
44         }
45
46     }
47
48
49     static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
50     {
51         string str = "";
52         string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
53         Exception error = e.Exception as Exception;
54         if (error != null)
55         {
56             str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
57             error.GetType().Name, error.Message, error.StackTrace);
58         }
59         else
60         {
61             str = string.Format("应用程序线程错误:{0}", e);
62         }
63
64         //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
65         LogManager.WriteLog(str);
66     }
67
68     static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
69     {
70         string str = "";
71         Exception error = e.ExceptionObject as Exception;
72         string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
73         if (error != null)
74         {
75             str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
76         }
77         else
78         {
79             str = string.Format("Application UnhandledError:{0}", e);
80         }
81
82         //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
83         LogManager.WriteLog(str);
84     }
85 }

C# 捕获系统闪退BUG相关推荐

  1. APP测试常见闪退bug以及、测试需关注点

    APP测试常见闪退bug以及.测试需关注点 一. app出现闪退的原因: 1.空指针:对象没有初始化就使用了: 2.空函数:有事件源但没有对应的事件对象: 3死循环:没有合理的循环控制流: 4.内存泄 ...

  2. 微信突发闪退 BUG,罪魁祸首竟是一张神奇的二维码图片

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​ 建议别尝试:转发这个二维码到群里,3秒后你会回来骂我(抖m求骂) 近日,网传微信识别上方二维码就会出现闪退BU ...

  3. 微信闪退Bug罪魁祸首竟是二维码引擎,附源代码分析

    建议别尝试:转发这个二维码到群里,3秒后你会回来骂我(抖m求骂) 近日,网传微信识别上方二维码就会出现闪退BUG,小编也忍不住尝试了一下,果然,一识别该二维码微信立马就出现了闪退的现象: 且会出现&q ...

  4. mobaxterm显示图像闪退_日报|苹果修复王者闪退Bug;OPPO公布新一代混合光学变焦技术...

    iOS 14 Beta 5推送:修复王者闪退Bug苹果今天推送了iOS 14开发者预览版Beta 5更新,从1.8GB大小的更新包来看,这次的iOS 14 Beta 5进行了大量的功能优化和问题修复. ...

  5. 极客日报:《英雄联盟》出现大面积闪退 Bug;维基百科 CEO 即将卸任;揭秘Windows 蓝屏为什么是蓝底白字...

    一.互联网快讯 1.天津大学两名 95 后,用脑电波写"福"字 两名天津大学的 95 后大学生,用脑电波操控"哪吒"多脑协控智臂系统写了个"福&quo ...

  6. 极客日报第 68 期:《英雄联盟》出现大面积闪退 Bug;维基百科 CEO 即将卸任;揭秘Windows 蓝屏为什么是蓝底白字

    文章目录 一.互联网快讯 二.程序员专属 三.Github 每日精选 四.CSDN 社区优质博文精选 一.互联网快讯 1.天津大学两名 95 后,用脑电波写"福"字 两名天津大学的 ...

  7. ubuntu中打开出现闪退_Ubuntu查看程序崩溃、系统闪退日志

    前言 本文旨在简单介绍如何查找Ubuntu的程序崩溃.系统闪退日志. MOTIVATION 最近自己的Ubuntu电脑总是在我打字写博客(使用的搜狗输入法)的时候突然整个屏幕就卡住了,鼠标能动,但是用 ...

  8. 如何处理win10系统内置Linux系统闪退问题

    2019独角兽企业重金招聘Python工程师标准>>> 导读 win10系统的功能非常强大,能够很好地支持Linux系统.不过,最近一些朋友反馈自己在win10系统下使用内置Linu ...

  9. 潜渊症设置语言后闪退bug解决

    潜渊症设置语言后闪退bug解决 steam上最近出了个海底潜水艇的合作生存游戏,看了直播后感觉画风挺有意思,就买了个玩 谁知道安装后设置语言 没有任何提示 直接闪退!!! 咱也是写代码的,想体现下自己 ...

最新文章

  1. netty源码深度分析
  2. asp.net ajax控件工具集 AutoCompleteExtender控件
  3. Jquery中css()方法获取边框长度
  4. 动态规划之背包模型及其扩展应用
  5. linux怎么运行ofstream,ofstream和ifstream详细用法---转
  6. java mvc增删改查_springmvc-CRUC增删改查
  7. 揭秘 | 小米最新款12PRO智能动态刷新率技术原理
  8. python导出数据顿号做分隔符_Python语言和matplotlib库做数据可视化分析
  9. jQuery UI.Layout
  10. 计算机网络学习笔记(27. Email应用概述)
  11. C++ 函数模板与分离编译模式
  12. Enterprise Library 缓存应用程序块快速入门
  13. 网络安全问题及防护措施有哪些
  14. 计算机复制方法有,如何在电脑上复制粘贴文字(包括快捷键),来学习吧
  15. 基于双月数据集利用最小二乘法进行分类
  16. 斯坦福的《机器学习》课程上线了
  17. u大师u盘装系统win7_U盘启动联想ThinkPad E450 20DCA026CD重装win7系统教程分享
  18. MFC中单文档程序框架
  19. 《惢客创业日记》2019.01.21(周一)你还记得米卢吗?
  20. The World's 100 Greatest Classical Composers

热门文章

  1. Hive中实现有序,有序concat拼接,有序集合,hive方法操作命令,与自带方法列表
  2. php经典面试题时间,php 经典面试题及答案
  3. android studio工程特点,Android Studio的重要特性
  4. 回老家还是继续北上广?
  5. 单片机数字滤波算法如何实现?(附代码)
  6. 带你全面认识 Linux
  7. 漫画版:如何学习单片机?
  8. 有一个懂机械、懂焊接、懂电子的爹是什么概念。。。
  9. 论MOS管开关对电源的影响
  10. vuejs滚动条_vuescroll-一款基于vuejs2.x的虚拟滚动条