跳轉到內容

Visual Basic .NET/異常處理

來自華夏公益教科書,自由的教科書

異常處理

[編輯 | 編輯原始碼]

在程式碼中處理錯誤有兩種主要方式,以避免在錯誤發生時停止程式。

On Error GoTo

[編輯 | 編輯原始碼]

VBA 中使用的一種較舊的方法是“非結構化”錯誤處理,仍然可以透過 On Error GoTo 語法使用,因為它使用指向標籤的 Goto。在某些情況下,如果希望在處理完錯誤後 Resume 處理,這仍然很有用。

    Public Sub Main()
        On Error GoTo Label1
        Dim Result As Integer = 1
        Dim a = 1
        Dim b = 0
        Result = a / b  ' Division by zero
Label1:
        MessageBox.Show(Result)
    End Sub

為了避免定義標籤,可以簡單地要求在一定時間內忽略所有錯誤,並使用 On Error GoTo 0 重新啟用它們。

        On Error Resume Next
        Dim Result As Integer = 1
        Dim a = 1
        Dim b = 0
        Result = a / b
        On Error GoTo 0
        MessageBox.Show(Result)

Try...Catch...Finally

[編輯 | 編輯原始碼]

“結構化錯誤處理”可以透過較新的 Try...Catch...Finally 語法使用。各種錯誤條件透過基本 Exception 類的繼承者來實現。

    Public Sub Main()
        Dim Result As Integer = 1
        Dim a = 1
        Dim b = 0
        Try
            Result = a / b
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            MessageBox.Show(Result)
        End Try
    End Sub

提示:如果你想在 Catch 塊中重新丟擲異常,請使用 Throw 關鍵字而不帶任何引數(特別是不要使用“Throw ex”)。如果提供引數,Throw 關鍵字會重置異常物件的 .StackTrace 屬性。在 Catch 塊中不帶任何引數的 Throw 將重新丟擲錯誤,而不會重置 .StackTrace 屬性。[1]

  1. Eric Lippert's Blog
華夏公益教科書