共用方式為


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)

概念

決策結構 (Visual Basic)

迴圈結構 (Visual Basic)

其他控制結構 (Visual Basic)

巢狀控制結構 (Visual Basic)

其他資源

Visual Basic 中的控制流程