当异常发生时,我想使用自己的catch-exception。
我的测试代码是这样的...
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim sb As System.Text.StringBuilder
sb.Append("test")
Catch ex As Exception
ex.Alert("Yo")
End Try
End Sub
End Class
<Serializable>
Public Class Exception
Inherits System.Exception
Public Sub Alert(text As String)
MsgBox(text)
End Sub
Public Sub New(message As String)
MyBase.New(message)
End Sub
Public Sub New(message As String, innerException As Exception)
MyBase.New(message, innerException)
End Sub
Public Sub New()
End Sub
Protected Sub New(serializationInfo As Runtime.Serialization.SerializationInfo, streamingContext As Runtime.Serialization.StreamingContext)
End Sub
End Class
但是它没有捕获错误。
如何用自己的类替换“ Exception”类?
您已经成功创建了一个自定义异常类型(尽管仅将其命名为Exception
可能会引起混淆,但是您应该给它指定一个更具体的名称)。但是throwing是您的异常类型。内置的.NET代码都不是在考虑您的自定义异常的情况下构建的,因此不会抛出该类型。
您的代码可以引发您的自定义异常类型。例如,根据某些条件引发异常:
Try
If someCondition Then
Throw New Exception()
End If
Catch ex As Exception
ex.Alert("Yo")
End Try
通常,类似的情况会在调用堆栈的更深处发生,例如在您调用的方法中,而不是与此处的Try/Catch
处于同一级别。 (请考虑一下一般性建议,即不要为控制流使用异常,这是在这个人为的示例中所发生的事情。)
但是关键是您的代码会抛出您的自定义异常,内置的.NET代码当然不会那样做。