博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# WINFORM 捕获全局异常
阅读量:5844 次
发布时间:2019-06-18

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

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace WinFormApp{    static class Program    {        ///         /// 应用程序的主入口点。        ///         [STAThread]        static void Main()        {            try            {                //处理未捕获的异常                   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);                //处理UI线程异常                   Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);                //处理非UI线程异常                   AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);                Application.EnableVisualStyles();                Application.SetCompatibleTextRenderingDefault(false);                Application.Run(new Form1());            }            catch (Exception ex)            {                string str = "";                string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";                if (ex != null)                {                    str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",                         ex.GetType().Name, ex.Message, ex.StackTrace);                }                else                {                    str = string.Format("应用程序线程错误:{0}", ex);                }                writeLog(str);                MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);            }        }        ///         ///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考        ///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等        ///这就是仁者见仁智者见智,大家自己做了。        ///         ///         ///         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)        {            string str = "";            string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";            Exception error = e.Exception as Exception;            if (error != null)            {                str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",                     error.GetType().Name, error.Message, error.StackTrace);            }            else            {                str = string.Format("应用程序线程错误:{0}", e);            }            writeLog(str);            MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);        }        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)        {            string str = "";            Exception error = e.ExceptionObject as Exception;            string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";            if (error != null)            {                str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);            }            else            {                str = string.Format("Application UnhandledError:{0}", e);            }            writeLog(str);            MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);        }        ///         /// 写文件        ///         ///         static void writeLog(string str)        {            if (!Directory.Exists("ErrLog"))            {                Directory.CreateDirectory("ErrLog");            }            using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true))            {                sw.WriteLine(str);                sw.WriteLine("---------------------------------------------------------");                sw.Close();            }        }    }}

 

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

你可能感兴趣的文章
OkHttp源码分析
查看>>
NS_OPTIONS枚举的用法
查看>>
QAQ高精度模板笔记√
查看>>
【Android笔记】入门篇02:全屏设置和禁止横屏竖屏切换
查看>>
Kubernetes的本质
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>
发力IoT领域 Marvell注重生态系统发展
查看>>
20个问题揭穿冒牌数据科学家
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
KVM虚拟机在线添加网卡
查看>>
Spring解析
查看>>
java设计模式之——代理模式
查看>>
python中str和repr区别
查看>>
升级win10后无法使用桥接网络解决方法
查看>>