我有一个继承Exception的自定义异常类。 在我的Try-Catch块中,我有一行代码导致InvalidCastException。
但是异常总是在导致它的代码行中未处理,并且没有被Catch块捕获。
Public Class InvalidPremiumException
Inherits System.Exception
Public Sub New()
End Sub
Public Sub New(message As String)
MyBase.New(message)
End Sub
Public Sub New(message As String, inner As Exception)
MyBase.New(message, inner)
End Sub
End Class
然后在另一个班级:
Try
' code that causes an InvalidCastException here
Catch ex As InvalidPremiumException
Console.WriteLine("Invalid or Missing Premium")
End Try
答案 0 :(得分:0)
您正在InvalidPremiumException
区块中抓取Catch
。只有那个类型为InvalidPremiumException
或从其继承的块中才会捕获该异常,其他异常将被取消处理。
您也可以考虑使用多个catch
块。
InvalidCastException
将在第二个Catch
块中处理:
Try
' code that causes an InvalidCastException here
Catch ex As InvalidPremiumException
Console.WriteLine("Invalid or Missing Premium")
Catch ex As Exception
Console.WriteLine("Catching other exceptions")
End Try
Catch
块仅处理那些属于同一类型或其子类型的异常。这就是为什么在第二个块中处理自定义异常的原因。