余小章 @ 大內聖殿
祕訣無它, 唯勤而已, by 余小章

导航

 

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

 

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

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

image

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

image

 

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

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

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

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

image

 

 

再加入方法

image

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

image

觀察執行結果

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

image

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

image

 

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

 

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

2010-0712-1429

範例下載

VB_AppException.zip

CS_AppException.zip

posted on 2010-07-14 15:44  余小章  阅读(575)  评论(2编辑  收藏  举报