Visual Basic .NET/異常處理
外觀
在程式碼中處理錯誤有兩種主要方式,以避免在錯誤發生時停止程式。
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 語法使用。各種錯誤條件透過基本 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]