逐步解說:結構化例外處理
更新:2007 年 11 月
雖然您仍然可以運用 On Error 陳述式來處理程式碼中的例外狀況 (Exception),以提供非結構化例外處理,但 Visual Basic 2005 也支援結構化例外處理,使用這項處理來建立與維護具有完整錯誤處理功能的程式。在結構化例外處理中,程式碼區塊會針對特定環境進行測試並產生回應。
此逐步解說將示範如何加入結構化例外處理到程式中。特別是,這裡會示範如何使用 Try...Catch...Finally 陳述式處理例外狀況,以及如何在 Catch 區塊內執行錯誤篩選。
注意事項: |
---|
您不能在同一個程序中合併使用結構化與非結構化例外處理。 |
注意事項: |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
建立應用程式
下列應用程式是一家銷售泰迪熊之公司的客戶訂購表單。使用者介面由下列控制項組成:
一個用於客戶姓名的 TextBox。
兩個選擇泰迪熊顏色與大小的 ComboBox 控制項。
一個 [訂單] Button。
三個向使用者說明每個控制項用途的標籤。
當使用者輸入要求的資訊並按下 [訂單] 按鈕時,應用程式會顯示訂單的摘要。
若要建立應用程式
從 [檔案] 功能表選取 [新增專案]。這時會顯示 [新增專案] 對話方塊。
在 [專案類型] 視窗內,選取 [Visual Basic 和 Windows] (若尚未選取),然後從 [範本] 視窗中選取 [Windows 應用程式]。
在 [屬性] 視窗中的 [名稱] 下,輸入 TeddyBearProject,並按一下 [確定]。專案會加入 [方案總管] 中,且會開啟 Windows Form 設計工具。
將控制項加入至表單,並依照指定的方式設定其屬性。
控制項
屬性
屬性值
Label
Name
Text
customerLabel
泰迪熊訂購表單
TextBox
Name
Text
customerName
客戶名稱
Label
Name
Text
bearColorLabel
可選的顏色
ComboBox
Name
Items
Text
bearColor
黑色、棕色、斑點
泰迪熊顏色
Label
Name
Text
bearSizeLabel
可選的大小
ComboBox
Name
Items
Text
bearSize
小、中、大
大小
Button
Name
Text
order
訂單
加入功能
現在已加入並已設定控制項及其屬性,您必須在它們後面加入程式碼以便開始運作。下列程式碼會處理 [訂單] 按鈕的 Click 事件,並顯示訊息給客戶。
若要將功能加入至表單及其控制項
將下列程式碼加入 [訂單] 按鈕的 Click 事件。
Dim bearOrder As String bearOrder = _ String.Format("You have ordered a {0} {1} bear.", _ bearSize.SelectedItem, bearColor.SelectedItem) MsgBox(bearOrder)
現在即可將應用程式加入結構化例外處理程式碼。
加入 Try...Catch 區塊
若要確定客戶是否已經指定泰迪熊的顏色,則加入 Try...Catch 陳述式。請記住以下要點:
不含識別項的 Catch 子句可以取得所有的例外狀況。
含有 When 子句的 Catch 子句只有在運算式評估為 True 時才會取得例外狀況,該運算式型別必須可以隱含轉換為 Boolean。
若要加入簡單的 Try...Catch 區塊
將下列程式碼加入至 [訂單] 按鈕的 Click 事件中測試大小與顏色值的區段之後 (也就是 String.Format ("You have ordered a {0} {1} bear.", BearSize.SelectedItem, BearColor.SelectedItem) 之後)。如果此程式碼遇到無效的顏色值,就會擲回例外狀況。在加入 Try 陳述式時,要注意編輯器會在陳述式結尾自動加入 End Try。
Try If ((bearColor.SelectedIndex < 0) Or _ (bearColor.SelectedIndex > 2)) Then Throw New System.Exception() End If ' The Catch statement handles errors caused by a lack of bear color. Catch ex As Exception When bearColor.SelectedIndex < 0 bearOrder = String.Format("You must select a bear color!") Finally Beep() ' Beep at the end. End Try
若要加入其他的 Catch 子句
將新項目 "Purple" 加入 bearColor ComboBox 控制項中。
將下列程式碼加入 bearOrder = String.Format("You must select a bear color!") 程式碼行之後。
Catch ex As Exception When bearColor.SelectedIndex = 3 bearOrder = String.Format("There are no bears of that color.")
您可以視需要在程式碼中加入 Catch 子句,數目不限。
測試
現在您可以測試應用程式,以確定程式運作正常。
若要建置及執行應用程式
從 [建置] 功能表選取 [建置 TeddyBearProject]。
請按 F5 以執行應用程式。主表單隨即顯示。
若要測試應用程式
在 [客戶名稱] 文字方塊中輸入名字,然後從 [可選的顏色] 和 [可選的大小] 下拉式方塊中選取泰迪熊的顏色和大小。
按一下 [訂單] 按鈕。如果您在前一個步驟中選擇了 [黑色]、[棕色] 或 [斑點] 其中一種顏色,則會顯示訊息,列出訂購的泰迪熊大小和顏色。
如果您沒有指定顏色,會出現一段訊息提醒您先指定顏色。
按一下 [確定] 將訊息取消。
在 [可選的顏色] 文字方塊中,選取 [紫色],然後按一下 [訂單] 按鈕。則會出現訊息,說明沒有紫色的泰迪熊。
請參閱
概念
參考
Try...Catch...Finally 陳述式 (Visual Basic)