【C#】Winform 全局異常捕獲處理
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
我們?cè)陂_(kāi)發(fā)winform程序的時(shí)候經(jīng)常需要處理異常,如果沒(méi)處理好異常程序就會(huì)崩潰,影響用戶體驗(yàn)。 在program的main方法里面設(shè)置異常處理方式,然后注冊(cè)異常處理的兩個(gè)事件: 1.設(shè)置異常處理方式Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);//處理未捕獲的異常 2.ThreadException 處理UI線程異常Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); Application_ThreadException方法: static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string str = ""; string strDateInfo = "\r\n\r\n出現(xiàn)應(yīng)用程序未處理的異常:" + DateTime.Now.ToString() + "\r\n"; Exception error = e.Exception as Exception; if (error != null) { string logInfo = string.Format(strDateInfo + "異常類型:{0}\r\n異常消息:{1}\r\n異常信息:{2}\r\n", error.GetType().Name, error.Message, error.StackTrace); str = string.Format(strDateInfo + "異常類型:{0}\r\n異常消息:{1}\r\n", error.GetType().Name, error.Message);} else { str = string.Format("應(yīng)用程序線程錯(cuò)誤:{0}", e);} MessageBox.Show(str, "系統(tǒng)錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error); 3.UnhandledException 處理非UI線程異常AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); CurrentDomain_UnhandledException 方法: static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{ string str = ""; Exception error = e.ExceptionObject as Exception; string strDateInfo = "出現(xiàn)應(yīng)用程序未處理的異常:" + DateTime.Now.ToString() + "\r\n"; if (error != null) { string logInfo = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆棧信息:{1}", error.Message, error.StackTrace); str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r", error.Message); } else { str = string.Format("Application UnhandledError:{0}", e); } MessageBox.Show(str, "系統(tǒng)錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error); }該文章在 2023/9/4 12:16:48 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |