自定义异常未捕获,但未处理

时间:2014-01-30 16:23:28

标签: exception-handling try-catch

我有一个继承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

1 个答案:

答案 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块仅处理那些属于同一类型或其子类型的异常。这就是为什么在第二个块中处理自定义异常的原因。