HOW TO:發生錯誤時保留控制權 (Visual Basic)
可使用「結構化例外處理」(Structured Exception Handling) 的 Try...Catch...Finally 陳述式 (Visual Basic) 建構函式。 如果在程式碼執行時發生特定例外狀況 (Exception),這可讓您執行陳述式 (Statement) 的特定區塊。 發生這種情況時,程式碼會「擲回」(Throw) 例外狀況,而您可使用適當的 Catch 陳述式來「攔截」(Catch) 它。
若要在程式碼造成例外狀況時執行一組陳述式
使用 Try...Catch...Finally 建構函式來封入可能造成例外狀況的程式碼。 然後,指定發生例外狀況時所要執行的程式碼,並選擇性地提供一組在控制權離開 Try...Catch...Finally 建構函式之前要執行的陳述式。
下列範例嘗試計算 Object 變數 givenDate 中所提供值之後的日期和時間 (剛好 100 年)。
Dim givenDate As Object Dim nextCentury As Date Try nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate) Catch thisExcep As System.ArgumentOutOfRangeException ' The resulting date/time is later than December 31, 9999. Catch thisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch thisExcep As System.InvalidCastException ' The value in givenDate cannot be interpreted as a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always run before leaving the Try structure. End Try
前三個 Catch 區塊處理預期來自 DateAdd 函式的例外狀況。 您可處理最後一個 Catch 區塊中的任何未預期例外狀況。
不論發生什麼情況,在離開 Try...Catch...Finally 建構函式之前,Finally 區塊永遠是最後執行的程式碼。 如果在 Try 或 Catch 區塊中建立或開啟資源 (例如物件或資料庫連接),則可使用 Finally 區塊來關閉它們,並處置 (Dispose) 它們 (如果適當)。
如果例外狀況變數 thisExcep 未出現在宣告陳述式 (Declaration Statement),例如 Dim,則具有 As 子句的 Catch 陳述式就是宣告。
請參閱
工作
HOW TO:將控制權轉移出控制結構 (Visual Basic)
HOW TO:依據一個或多個條件執行陳述式 (Visual Basic)
HOW TO:測試運算式的多個值 (Visual Basic)