Try Catch能幫你做什麼(3)?

在之前的例子中,都是一個Try配著一個Catch,其實一個Try可以搭配很多Catch,這樣子的作法,可以依照不同的例外狀況做不同的處理。

          在之前的例子中,都是一個Try配著一個Catch,其實一個Try可以搭配很多Catch,這樣子的作法,可以依照不同的例外狀況做不同的處理。

比方說,在Try區塊中處理事情包括了Socket和資料連結,而我們希望能夠在補捉到SockectExecptionSqlException 時採取不同的應變方案,Try Catch區塊就可以這樣寫:
Try
           
Catch socketEX As SocketException
           ‘如果發生Socket Execption該做的事
Catch SqlEx As SqlException
            ‘如果發生Sql Execption該做的事
Catch ex As Exception
             ‘如果發生其它 Execption該做的事
 
Finally
 
End Try
 
所以當發生Socket Execption,就會執行「如果發生Socket Execption該做的事」;但不會執行「如果發生其它 Execption該做的事」和「如果發生Sql Execption該做的事」。
 
這個Catch的排列方式是有順序的,當兩個Catch有相關的時候,範圍小的Execption一定要在前面,以前面的例子,如果我們改成
Try
 
Catch ex As Exception
 
Catch socketEX As SocketException
 
Catch SqlEx As SqlException
 
Finally
 
End Try
 
這樣編譯會發出警告,VB.NET甚至不需編譯就會出現紅線,告訴你Catch socketEX As SocketExceptionCatch SqlEx As SqlException 這兩個區塊執行不到,因為Catch ex As Exception 幾乎會欄截到所有的例外。
 
Try Catch是不是很有趣呢?善用Try Catch不僅是是在處理與例外相關的事情,如果多加注意Exception帶給我們的訊息,對於程式結構的改善與程式撰寫也會有所助益。