C# winform 捕获全局异常

using System;using System.Collections.Generic;using System.Windows.Forms;using System.IO;namespace GobalException{internal static class Program{/// <summary>/// </summary>[STAThread]private 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);}}/// <summary>///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private 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);}private 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);}/// <summary>/// </summary>/// <param name="str"></param>private static void writeLog(string str){if (!Directory.Exists("ErrLog")){Directory.CreateDirectory("ErrLog");}using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true)){sw.WriteLine(str);sw.WriteLine("———————————————————");sw.Close();}}}}

莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法

C# winform 捕获全局异常

相关文章:

你感兴趣的文章:

标签云: