C# WinForm捕獲全局異常(捕獲未處理的異常)
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
1. static class Program 2. { 3. /// <summary> 4. /// 應(yīng)用程序的主入口點。 5. /// </summary> 6. [STAThread] 7. static void Main() 8. { 9. try 10. { 11. //設(shè)置應(yīng)用程序處理異常方式:ThreadException處理 12. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 13. //處理UI線程異常 14. Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 15. //處理非UI線程異常 16. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 17. 18. #region 應(yīng)用程序的主入口點 19. Application.EnableVisualStyles(); 20. Application.SetCompatibleTextRenderingDefault(false); 21. Application.Run(new Form1()); 22. #endregion 23. } 24. catch (Exception ex) 25. { 26. string str = GetExceptionMsg(ex,string.Empty); 27. MessageBox.Show(str, "系統(tǒng)錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); 28. } 29. } 30. 31. 32. static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 33. { 34. string str = GetExceptionMsg(e.Exception, e.ToString()); 35. MessageBox.Show(str, "系統(tǒng)錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); 36. //LogManager.WriteLog(str); 37. } 38. 39. static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 40. { 41. string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString()); 42. MessageBox.Show(str, "系統(tǒng)錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); 43. //LogManager.WriteLog(str); 44. } 45. 46. /// <summary> 47. /// 生成自定義異常消息 48. /// </summary> 49. /// <param name="ex">異常對象</param> 50. /// <param name="backStr">備用異常消息:當(dāng)ex為null時有效</param> 51. /// <returns>異常字符串文本</returns> 52. static string GetExceptionMsg(Exception ex,string backStr) 53. { 54. StringBuilder sb = new StringBuilder(); 55. sb.AppendLine("****************************異常文本****************************"); 56. sb.AppendLine("【出現(xiàn)時間】:" + DateTime.Now.ToString()); 57. if (ex != null) 58. { 59. sb.AppendLine("【異常類型】:" + ex.GetType().Name); 60. sb.AppendLine("【異常信息】:" + ex.Message); 61. sb.AppendLine("【堆棧調(diào)用】:" + ex.StackTrace); 62. } 63. else 64. { 65. sb.AppendLine("【未處理異?!浚?/span>" + backStr); 66. } 67. sb.AppendLine("***************************************************************"); 68. return sb.ToString(); 69. } 70. } 該文章在 2023/9/4 11:57:30 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |