標籤:
本來課程學習中對異常處理機制學的不深,結果今天做CVTE校招線上測評的時候,遇見了兩道這樣的題(一道打頭第一題,一道押尾倒數第二道),好憂桑啊。。
那麼亡羊補牢,總結下好了~
1. 異常處理塊
1 try{ 2 //可能產生異常的語句 3 }catch(Exception1 e){ 4 //出現異常Excertion1時的處理語句 5 }catch(Exception2 e){ 6 //出現異常Excertion2時的處理語句 7 }finally{ 8 //無論如何均會執行的語句(一般用於釋放一些資源等) 9 }10 //期間異常Exception1不能是Exception2的基類,Exception1可為Exception2的子類
異常處理塊方式一
1 public void method() throws Exception1{2 //在方法名後直接拋出異常Exception13 }
異常處理塊方式二
方式一(捕獲異常)try-catch可以嵌套使用構成嵌套try-catch塊;
方式二(拋出異常)可以拋出多個異常,即throws後可以添加一個異常列表,異常名之間用逗號分隔。
PS:printStackTrace()方法用來跟蹤例外狀況事件發生時列印堆棧中的資訊(Throwable對象)
2. finally子句
在任何情況下,finally塊中的語句均會執行,無論try塊中是否出現異常或者是否捕獲了異常;
finally子句通常用於I/O編程,可在finally塊中放置一條檔案關閉語句。
PS:1)若try塊中沒有出現異常,finally塊中語句被執行,然後跳出異常處理塊執行下一條語句;
2)若try塊中有一個語句出現異常,並被catch塊捕獲,此時跳過try塊中其他語句直接執行catch塊和finally子句;
3)若try塊中有一個語句出現異常,但是沒有被任何catch塊捕獲,則會跳過try塊中其他語句直接執行finally子句;
4)即使在到達finally塊之前有return語句,finally塊仍然會執行,但是finally子句執行前,已經完成了return後運算式傳回值的運算(並儲存起來),順序如下:
try語句(return之前的代碼部分)---計算return需要返回的值---finally---執行try中的 return語句
(含有return的執行順序總結,詳細可參看http://blog.csdn.net/kavensu/article/details/8067850 “3Q啦博主,小女子在此謝過~”)
<JAVA>總結實錄01 : 異常處理 try-catch-finally