摘要:[C#] .NET Runtime 2.0 Error Reporting # 5000 例外錯誤處理
隨著.Net發展,許多程式開發者都會用到.Net相關元件
但是問題是有許多的錯誤訊息是無法被捕獲
就算是用try...catch包覆,也不能百分之百杜絕
因此,.Net 的設計者也考慮到這些問題,並且為我們提供了一個叫UnhandledExceptionEventHandler 的事件
通過這個事件,我們可以截獲未捕獲異常,並進行處理。
這個事件的事件參數UnhandledExceptionEventArgs e,
有兩個屬性,一個是ExceptionObject,這個屬性返回為截獲異常的對象實例。
還有一個屬性是IsTerminating,這個屬性告訴我們這個異常是否會導致應用終止。
我們常會看到一些錯誤訊息,如下圖:
到事件檢視器去查看錯誤LOG,但是無法得知真正原因,如下圖:
有發現到網路上也有許多人有相同問題,而小弟最近也遇到了
所以在網路上找了一下,並記錄下來,希望能夠捕獲到錯誤LOG,且讓程式不至於掛掉
程序運行後記錄下日誌如下
System.DivideByZeroException: Attempted to divide by zero.
at TestCosole.Program.TestRaiseException.Finalize()
完整的測試代碼如下:
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);
}
static void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs args)
{
if (!(args.ExceptionObject is ThreadAbortException))
{
Exception ex = args.ExceptionObject as Exception;
Console.WriteLine(ex.Message);
}
}
Y2J's Life:http://kimenyeh.blogspot.tw/