首页 > 学院 > 开发设计 > 正文

C# winform 捕获全局异常

2019-11-08 03:09:58
字体:
来源:转载
供稿:网友

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

            #region 应用程序的主入口点

            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            Application.Run(new Main());

            #endregion

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

            //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);            LogManager.WriteLog(str);         }

    }

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

        //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);        LogManager.WriteLog(str);    }

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

        //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);        LogManager.WriteLog(str);    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表