自学内容网 自学内容网

C#中全局处理异常方式

https://www.cnblogs.com/YYkun/p/8952924.html

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();

        }

    }

}


原文地址:https://blog.csdn.net/zunguitiancheng/article/details/136303799

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!