• C#中全局处理异常方式


    using System;
    using System.Configuration;
    using System.Text;
    using System.Windows.Forms;
    using ZB.QueueSys.Common;
    
    namespace ZB.QueueSys
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                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);
                //数据库类型
                DBHelper.Instance.DBType = int.Parse(ConfigurationManager.AppSettings["DBType"]);
                //数据库连接串
                DBHelper.Instance.ConnectionStr = ConfigurationManager.ConnectionStrings["DBStr"].ConnectionString;
                Application.Run(new MainForm());
                //Application.Run(new QueueForm());
            }
    
            private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
            {
                string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
                LogHelper.Instance.SaveText(str);
                Exception error = e.ExceptionObject as Exception;
                MessageBox.Show(error.Message, "系统异常提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
    
            private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
            {
                string str = GetExceptionMsg(e.Exception, e.ToString());
                LogHelper.Instance.SaveText(str);
                MessageBox.Show(e.Exception.Message, "系统异常提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
    
            /// <summary>  
            /// 生成自定义异常消息  
            /// </summary>  
            /// <param name="ex">异常对象</param>  
            /// <param name="backStr">备用异常消息:当ex为null时有效</param>  
            /// <returns>异常字符串文本</returns>  
            private static string GetExceptionMsg(Exception ex, string backStr)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("****************************异常文本****************************");
                sb.AppendLine("【出现时间】:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
                if (ex != null)
                {
                    sb.AppendLine("【异常类型】:" + ex.GetType().Name);
                    sb.AppendLine("【异常信息】:" + ex.Message);
                    sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
                    sb.AppendLine("【异常方法】:" + ex.TargetSite);
                }
                else
                {
                    sb.AppendLine("【未处理异常】:" + backStr);
                }
                sb.AppendLine("***************************************************************");
    
                return sb.ToString();
            }
    
        }
    }
    

      

  • 相关阅读:
    用Ghost进行备份还原
    虚拟机出现“操作文件.PhysicalDrive1失败”的解决方法
    用typedef定义函数指针的问题
    模拟搭建Web项目的真实运行环境(七)
    模拟搭建Web项目的真实运行环境(六)
    模拟搭建Web项目的真实运行环境(五)
    模拟搭建Web项目的真实运行环境(四)
    javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
    在gridControl的单元格中的多行文本
    Devexpress Winform Gridcontrol 中根据条件单元格的值改变单元格的颜色等属性。
  • 原文地址:https://www.cnblogs.com/YYkun/p/8952924.html
Copyright © 2020-2023  润新知