2015-12-31 54 views
0

我是Visual Basic的新手,嘗試執行try和catch塊的下面的代碼。我只是檢查一下,我們是否可以在VB.net中同時捕獲多個異常。但我只得到一條消息。請清楚地解釋我。我們可以在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

當你拋出一個異常時,代碼跳轉到相關的catch塊,執行catch塊中存在的任何代碼,然後在End Try外面跳轉。目前還不清楚你會從這段代碼中得到什麼結果...... – Steve

回答

1

可以趕上try塊多的例外,但例外沒有得到同步提高(至少在你的代碼已經公佈)。

換句話說,第一個引發的異常是第一個被捕獲的異常。

在你的代碼

所以,如果a = 0然後ApplicationException會被抓住而如果b = 0然後tempIsZeroException會被抓住,如果兩個ab是等於0然後ApplicationException將引發異常,因爲If a = 0塊將首先被擊中並拋出異常並繞過If b = 0塊。

希望能夠增加一些清晰度。

+0

非常感謝@txtechhelp –

相關問題