[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch

首先,文章放到首頁並不是為了增加人氣,而是為了接受更多前輩的指教,得到不同的看法;更盼能引起更多人的討論,相互切磋學習。

 

我們都知道寫程式都要使用try catch 結構來補捉例外,萬一你有一個功能忘了寫 try catch 那該怎麼辦?以下的方案可能可以解決掉你所面臨的困難。

1.System.Windows.Forms 命名空間裡的Application.SetUnhandledExceptionMode 方法可以用來設定應用程式的例外捕捉,它是用來指示應用程式如何回應未處理的例外狀況;如果可以,請使用try Catch結構來捕捉例外。

image

2.而UnhandledExceptionMode 列舉型別是用來決定應用程式應將未處理之例外狀況 (Exception) 傳送至何處。

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第1张图片

 

3.Application.ThreadException事件是用來補捉UI執行緒所漏接的例外。

4.若要攔截不是UI 所建立及擁有的執行緒中發生的例外狀況,請使用 AppDomain.UnhandledException 事件

瞭解大概要用哪些類別後,便可以來實作。

首先開啟一個Winform專案在Progarm.cs檔案底下的Main方法加入以下程式碼

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第2张图片

 

 

再加入方法

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第3张图片

然後在UI程式中,隨便寫個東西觸發例外

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第4张图片

觀察執行結果

當第一次執行 result = Convert.ToInt32(source) 時會跳出以下例外視窗

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第5张图片

第二次執行 result = Convert.ToInt32(source) 時會跳出以下視窗

[C#.NET][VB.NET] Winform 應用程式等級的例外捕捉 / Winform Application of Level wicth Exception Catch_第6张图片

 

很顯然我們補捉到了漏網之魚的例外。

 

VB需要一些步驟(感謝Bill叔提供),主要是將Code寫在Sub Main裡。

範例下載

VB_AppException.zip

CS_AppException.zip

你可能感兴趣的:(application)