• C#捕获全局异常


    using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespace GobalException {     static class Program     {         /// <summary>         /// 应用程序的主入口点。         /// </summary>         [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() + " ";

                    if (ex != null)                 {                     str = string.Format(strDateInfo + "异常类型:{0} 异常消息:{1} 异常信息:{2} ",                          ex.GetType().Name, ex.Message, ex.StackTrace);                 }                 else                 {                     str = string.Format("应用程序线程错误:{0}", ex);                 }

                    writeLog(str);                 MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);             }

            }

            /// <summary>         ///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考         ///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等         ///这就是仁者见仁智者见智,大家自己做了。         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)         {                         string str = "";             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + " ";             Exception error = e.Exception as Exception;             if (error != null)             {                 str = string.Format(strDateInfo + "异常类型:{0} 异常消息:{1} 异常信息:{2} ",                      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() + " ";             if (error != null)             {                 str = string.Format(strDateInfo + "Application UnhandledException:{0}; 堆栈信息:{1}", error.Message, error.StackTrace);             }             else             {                 str = string.Format("Application UnhandledError:{0}", e);             }

                writeLog(str);             MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);         }         /// <summary>         /// 写文件         /// </summary>         /// <param name="str"></param>         static void writeLog(string str)         {             if (!Directory.Exists("ErrLog"))             {                 Directory.CreateDirectory("ErrLog");             }

                using (StreamWriter sw = new StreamWriter(@"ErrLogErrLog.txt", true))             {                 sw.WriteLine(str);                 sw.WriteLine("---------------------------------------------------------");                 sw.Close();             }         }     } }

  • 相关阅读:
    android ListView布局之一(继承listActivity、使用arrayAdapter)
    android your project contains error
    wojilu系统的ORM代码解析[源代码结构分析,ObjectBase基类分析]
    ORM中启用数据库事务
    我记录网站综合系统 技术原理解析[11:ActionProcessor流程wojilu核心]
    互联网,让我们更安全了,还是更危险了【纯讨论】
    不用服务器也能跑的框架wojilu续篇
    使用wojilu 无代码实现 输入框提示 及其背后的原理
    wojilu日志系统可以单独使用
    “我有什么” 和 “你要什么” 框架制作的一些思考
  • 原文地址:https://www.cnblogs.com/FLWL/p/4062357.html
Copyright © 2020-2023  润新知