博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 捕获系统闪退BUG
阅读量:4303 次
发布时间:2019-05-27

本文共 7606 字,大约阅读时间需要 25 分钟。

在程序入口添加代码 

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 Program 2     { 3         ///  4         /// 应用程序的主入口点。 5         ///  6         [STAThread] 7         static void Main() 8         { 9             try10             {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                 #endregion23             }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         /// 47         /// 生成自定义异常消息48         /// 49         /// 异常对象50         /// 备用异常消息:当ex为null时有效51         /// 
异常字符串文本
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 else64 {65 sb.AppendLine("【未处理异常】:" + backStr);66 }67 sb.AppendLine("***************************************************************");68 return sb.ToString();69 }70 }

复制代码

 

参考:

复制代码

1 static class Program 2 { 3     ///  4     /// 应用程序的主入口点。 5     ///  6     [STAThread] 7     static void Main() 8     { 9         try10         {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             #endregion25 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             else38             {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         else60         {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         else78         {79             str = string.Format("Application UnhandledError:{0}", e);80         }81 82         //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);83         LogManager.WriteLog(str);84     }85 }

复制代码

转载地址:http://wjlws.baihongyu.com/

你可能感兴趣的文章
如何设置开机自启动程序
查看>>
Nginx+FastCGI运行原理
查看>>
Spawn-fcgi与PHP-FPM区别
查看>>
PHP与PHP-FPM的配置与优化
查看>>
配置Nginx来支持PHP----重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。
查看>>
测试Nginx对PHP的解析功能--查看PHP安装配置以及功能列表统计信息
查看>>
优化Nginx中FastCGI参数的实例
查看>>
Windows如何查看端口占用
查看>>
phpstrom如何配置git
查看>>
phpStorm中如何使用git
查看>>
3种PHP连接MYSQL数据库的常用方法
查看>>
linux命令(6) zip/unzip及tar压缩与解压文件命令笔记
查看>>
linux命令(7)ubuntu的vim命令用法
查看>>
使用nginx配置多个php-fastcgi负载均衡
查看>>
CURL抓取网页内容并用正则提取。
查看>>
Ngin的配置文件nginx.conf完整配置说明(包括fastcgi和负载均衡设置)
查看>>
浏览器显示网页的机制
查看>>
CSS基础知识
查看>>
Nginx+PHP-FPM优化技巧总结
查看>>
Ubuntu安装Torque教程
查看>>