[C#] .NET Runtime 2.0 Error Reporting ID:5000 例外錯誤處理

  • 6464
  • 0

摘要:[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/