1

我创建了一个名为 ZeroException 的继承类,它继承自 System.DivideByZero 类,但是当发生除零异常时,它不会捕获该事件。

Class ZeroException
Inherits System.DivideByZero
Public Overrides ReadOnly Property Message() as String
Get 
Return "Divide By Zero"
End Get
End Property
End Class

主要代码:

Sub Calc()
dim x as integer=5
dim y as integer=0
dim k as single

Try   
k=x\y 'Integer Division
Catch ex as ZeroException  
Console.WriteLine(ex.Message) 'But I get another message. Not Divide By Zero
End Try

End Sub
4

1 回答 1

4

您没有捕获自定义异常,而是抛出了一个..所以在这种情况下,您的代码应如下所示:

    Try
        k = x \ y 'Integer Division
    Catch ex As DivideByZeroException
        Throw New ZeroException
    End Try

这是一个证明这一点的测试用例。

Imports System.Text
Imports Microsoft.VisualStudio.TestTools.UnitTesting

Class ZeroException
    Inherits DivideByZeroException
    Public Overrides ReadOnly Property Message() As String
        Get
            Return "Divide By Zero"
        End Get
    End Property
End Class

<TestClass()> Public Class UnitTest1

    <TestMethod()> Public Sub TestMethod1()
        Try
            MethodThrowsCustomException()
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub

    Public Sub MethodThrowsCustomException()
        Dim x As Integer = 5
        Dim y As Integer = 0
        Dim k As Single

        Try
            k = x \ y 'Integer Division
        Catch ex As DivideByZeroException
            Throw New ZeroException
        End Try

    End Sub

End Class
于 2012-09-21T09:45:00.563 回答