C#處理WindowForm程序中未捕獲的異常

經常有客戶抱怨程序遇到錯誤的時候程序就退出了,甚至來不及保存窗體的輸入數據,如果是普通的搜索界面也就罷了,但如果客戶是呼叫中心,問題就嚴重了.按道理,我們的程序員應該處理所有的異常,但有事實上做到的很難,因爲出乎意料的情況太多了.

首先介紹相應的C#相關知識: 

System.Windows.Forms.Application類  提供 static 方法和屬性以管理應用程序,例如啓動和停止應用程序、處理 Windows 消息的方法和獲取應用程序信息的屬性。  System.Windows.Forms.Application.ThreadException 事件 在發生未捕獲線程異常時發生。 

System.Windows.Forms.Application.SetUnhandledExceptionMode()方法 指示應用程序如何響應未處理的異常。  

SetUnhandledExceptionMode(UnhandledExceptionMode)  指示應用程序如何響應未處理的異常。  

SetUnhandledExceptionMode(UnhandledExceptionMode, Boolean)  指示應用程序如何響應未處理的異常,同時可選擇應用特定於線程的行爲。 System.Windows.Forms.UnhandledExceptionMode枚舉 定義 Windows 窗體應用程序應在何處發送未處理的異常。

public enum UnhandledExceptionMode { 

Automatic,         //將所有異常都傳送到 ThreadException 處理程序,除非應用程序的配置文件指定了其他位置。 

ThrowException,     //從不將異常傳送到 ThreadException 處理程序。忽略應用程序配置文件。

CatchException         //始終將異常傳送到 ThreadException 處理程序。忽略應用程序配置文件。

以下是實現示例:

        /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.ThreadException += Application_ThreadException;
            Application.Run(new FrmMain());
        }
        static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            //作爲示例,這裏用消息框顯示異常的信息
            MessageBox.Show(e.Exception.Message, "異常", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


 

發佈了11 篇原創文章 · 獲贊 9 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章