C#程序如何捕捉未try/catch的異常——不彈“XXX已停止工作”報錯框


誠意滿滿直接上代碼:

static void Main(string[] args)
{
    //Main函數中增加此句
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

並在Program類(Main函數所在類)中,增加如下函數即可:

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Console.WriteLine(e.ExceptionObject.ToString());
            Environment.Exit(-1); //有此句則不彈異常對話框
        }

注意:如果在CurrentDomain_UnhandledException中只打印異常而不終止程序的話,該異常仍然會被拋出,最終還是會導致彈出“XXX已停止工作”的對話框,所以如果不想彈框讓程序卡住的話就需要用第二句Environment.Exit或其他方式終止程序。當然此處除了向命令行輸出異常外還可以保存當前數據或者其他災難處理措施,但因為程序已經發生異常了,可能有些數據已經損壞,讀取可能導致其他問題,要小心哦!

另外winform程序的話,對Application對象也要做一些設置,具體可以參考微軟文檔中的例子:https://msdn.microsoft.com/zh-cn/library/ms157905(v=vs.110).aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM