我是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
答案 0 :(得分:1)
您可以在try块中捕获多个异常,但不会同时引发异常(至少不会在您发布的代码中)。
换句话说,引发的第一个异常是捕获的第一个异常。
因此,在您的代码中,如果a = 0
,则ApplicationException
会被b = 0
捕获,而tempIsZeroException
会被a
捕获,b
和0
{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);
块
希望能增加一些清晰度。