標籤:winform style blog class code tar
原文:winform 記錄全域異常捕獲
這篇文章主要是備用
記錄winform程式捕獲全域異常。
/// <summary> /// 應用程式的主進入點。 /// </summary> public static ApplicationContext context; [STAThread] private static void Main() { try { //處理未捕獲的異常 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //處理UI線程異常 Application.ThreadException += Application_ThreadException; //處理非UI線程異常 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; var aProcessName = Process.GetCurrentProcess().ProcessName; if ((Process.GetProcessesByName(aProcessName)).GetUpperBound(0) > 0) { MessageBox.Show(@"系統已經在運行中,如果要重新啟動,請從進程中關閉...", @"系統警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var sp = new SplashForm(); //create splash screen sp.Show(); //show splash screen context = new ApplicationContext(); context.Tag = sp; Application.Idle += Application_Idle; //註冊程式運行空閑去執行主程式表單相應初始化代碼 Application.Run(context); } } catch (Exception ex) { LogHelper.Log(ex); MessageBox.Show("系統出現未知異常,請重啟系統!"); } } //初始化等待處理函數 private static void Application_Idle(object sender, EventArgs e) { Application.Idle -= Application_Idle; if (context.MainForm == null) { var mw = new Login(); //YYQTestForm mw = new YYQTestForm(); context.MainForm = mw; var sp = (SplashForm) context.Tag; sp.Close(); //關閉啟動表單 mw.Show(); //啟動主程式表單 } } ///<summary> /// 這就是我們要在發生未處理異常時處理的方法,我這是寫出錯詳細資料到文本,如出錯後彈出一個漂亮的出錯提示表單,給大家做個參考 /// 做法很多,可以是把出錯詳細資料記錄到文本、資料庫,發送出錯郵件到作者信箱或出錯後重新初始化等等 /// 這就是仁者見仁智者見智,大家自己做了。 ///</summary> ///<param name="sender"> </param> ///<param name="e"> </param> private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { var ex = e.Exception; if (ex != null) { LogHelper.Log(ex); } MessageBox.Show("系統出現未知異常,請重啟系統!"); } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var ex = e.ExceptionObject as Exception; if (ex != null) { LogHelper.Log(ex); } MessageBox.Show("系統出現未知異常,請重啟系統!"); }View Code