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

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

using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace OVR_tools{    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);            }        }        #region 异常处理方法                       ///         ///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考        ///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等        ///这就是仁者见仁智者见智,大家自己做了。        ///         ///         ///         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 (!System.IO.Directory.Exists("ErrLog"))            {                System.IO.Directory.CreateDirectory("ErrLog");            }            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"ErrLog\ErrLog.txt", true))            {                sw.WriteLine(str);                sw.WriteLine("---------------------------------------------------------");                sw.Close();            }        }        #endregion    }}

 

转载于:https://www.cnblogs.com/280850911/archive/2013/03/20/2971558.html

你可能感兴趣的文章
AngularJs ng-change事件/指令(转)
查看>>
linux系统下安装两个或多个tomcat
查看>>
ProtoBuffer 简单例子
查看>>
iOS多线程开发系列之(一)NSThread
查看>>
微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
查看>>
SAP WM Physical Inventory Method ST & PZ
查看>>
一次快速的数据迁移感悟
查看>>
MySQL修改提示符
查看>>
《ELK Stack权威指南(第2版)》一3.6 Java日志
查看>>
C++流的streambuf详解及TCP流的实现
查看>>
《量化金融R语言初级教程》一2.5 协方差矩阵中的噪声
查看>>
mysql到elasticsearch数据迁移踩坑实践-Ali0th
查看>>
Python轻量级数据分析库DaPy
查看>>
beetl 和 shrio 结合
查看>>
相对/绝对路径,cd命令,mkdir/rmdir命令,rm命令
查看>>
tomcat中web.xml各配置项的意义
查看>>
Nodejs学习笔记(二):《node.js开发指南》代码中需要注意的几点
查看>>
Ztree异步加载自动展开节点
查看>>
反射操作公共成员变量
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>