我们可以在VB.net中同时捕获多个异常吗?

时间:2015-12-31 10:48:08

标签: vb.net exception

我是Visual Basic的新手,并尝试执行以下try和catch块代码。我只是检查我们是否可以同时在VB.net中捕获多个异常。但我只收到一条消息。请清楚地解释一下。

代码在

Public Class tempIsZeroException : Inherits System.Exception
    Public Sub New(ByVal mesage As String)
        MyBase.New(mesage)
    End Sub
End Class

Module Module1

    Sub Main()
        Dim a As Integer
        Dim b As Integer
        Console.WriteLine("ENter any number")
        a = Console.ReadLine()
        Console.WriteLine("ENter any number")
        b = Console.ReadLine()
        Try

            If a = 0 Then
                Throw New ApplicationException("asdf")
            End If
            If b = 0 Then
                Throw New tempIsZeroException("Exception caught")
            End If
        Catch ex As TempIsZeroException
            Console.WriteLine(ex.Message())
        Catch ex1 As ApplicationException
            Console.WriteLine(ex1.Message())
        End Try
        Console.ReadLine()
    End Sub

End Module

1 个答案:

答案 0 :(得分:1)

您可以在try块中捕获多个异常,但不会同时引发异常(至少不会在您发布的代码中)。

换句话说,引发的第一个异常是捕获的第一个异常。

因此,在您的代码中,如果a = 0,则ApplicationException会被b = 0捕获,而tempIsZeroException会被a捕获,b0 {1}}等于ApplicationException,然后If a = 0将成为异常,因为If b = 0块将首先被击中并且异常抛出并被捕获,绕过Calendar cal=Calendar.getInstance() cal.add(Calendar.MONTH,1) long afterTwoMonthsinMilli=cal.getTimeInMillis() DatePickerDialog.getDatePicker().setMaxDate(afterTwoMonthsinMilli);

希望能增加一些清晰度。