1. 程式人生 > >try catch finally,return組合使用

try catch finally,return組合使用

    在java中採用了異常捕獲機制,因此我們說java具有robustness特性:在java中對系統或對一些關鍵資料的操作需要加上try,catch塊,用於捕獲這部分可能發生異常的程式碼,能夠發現異常,警示程式設計人員可能發生的錯誤。try,catch,finally是三個關鍵部分:

    組合方式有三種  try{ }catch(){ }finally{ }try{ }catch(){ }try{ }finally{ },其中最後一種方式可能編譯成功也可能編譯失敗;

      一般步驟是當try塊中發生異常時,停止後續程式的執行(try塊中發生異常點後面程式碼不執行)

,轉而跳入catch塊中捕捉異常,最後執行finally塊(若有的話,不管發生異常與否,都將執行);

       當然可以在try塊中,再加上一個try,catch語句,用於捕捉內部程式碼的異常,這樣就形成了try,catch語句塊的巢狀,JVM處理方式如下:

       當外部的try發生異常時,跳到外部的catch和finally;

       當內部的try發生異常時,跳到內部的catch和finally,最後還要執行外部的finally語句;

       當內外部沒有異常發生時,則依次執行內部的finally和外部的finally;

   如果在try語句中有return語句

時,finally語句是在return語句前執行的,(而且finally語句不能改變return的返回值finally語句中不應含有return語句)但是如果finally語句中有return語句,則try中的return語句不會執行,先執行到finally語句中的return語句就會結束函式(而catch中的return語句則沒有任何影響,仍然接著執行finally中的程式碼)。

   若在一個方法內部出現的異常沒有用try語句塊進行捕捉,此時應在方法頭大括號前面加上throws Exception字樣,表示丟擲的異常,交給方法的上一級處理,若上一級沒有處理,則繼續遞交到上一層,直到jvm處理該異常;   

   若要自定義異常物件,不使用系統內建的異常庫(有時我們需要自己定義的異常現象,如當某個值超出500,將觸發異常,這在內建庫中沒有定義),可以在方法內某個語句後加上:throw new Exception();丟擲異常,此時會跳入相應的catch語句塊進行異常的處理;

   可以寫一個繼承了Exception類的異常類,定義我們自己的異常處理提示資訊;結合上一點使用,更有意義。