聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當前位置: > 關(guān)注 > > 正文

finally的作用是什么?java異常處理之finally

來源:CSDN 時間:2023-03-14 08:33:23

上節(jié)課我們學(xué)習(xí)了異常的拋出和捕獲,這節(jié)課我們再來學(xué)一個關(guān)鍵字: finally

finally和final是不一樣的哦,final是聲明常量的,而finally是做異常處理的。

finally語法:


(資料圖片僅供參考)

try{

可能包含異常的代碼

}catch(異常類 變量名){

異常處理代碼

}...(多個catch)

finally{

后置處理代碼

}

來看一個小例子:

Demo:

public static void main(String[] args) {    try {        test();    } catch (Exception e) {        e.printStackTrace();    }}public static void test() throws Exception {    try {        throw new Exception("lalalala");    }catch (RuntimeException e){        e.printStackTrace();    }finally {        System.out.println("finally");    }}

輸出:

finally

java.lang.Exception: lalalala

at helloworld.exception.FinallyTeach.test(FinallyTeach.java:15)

at helloworld.exception.FinallyTeach.main(FinallyTeach.java:7)

結(jié)論:

異常如果沒有被捕獲,會執(zhí)行finally的代碼

Demo 2:

public static void main(String[] args) {    try {        test2();    } catch (Exception e) {        e.printStackTrace();    }}public static void test2() throws Exception {    try {        throw new RuntimeException("abcd");    }catch (RuntimeException e){        e.printStackTrace();    }finally {        System.out.println("finally");    }}

輸出:

finally

java.lang.RuntimeException: abcd

at helloworld.exception.FinallyTeach.test2(FinallyTeach.java:25)

at helloworld.exception.FinallyTeach.main(FinallyTeach.java:7)

結(jié)論: 如果異常被捕獲,依然會執(zhí)行finally里的代碼

最終結(jié)論:

無論異常是否被捕獲,finally的代碼一定會被執(zhí)行。finally里適合存放釋放資源、后續(xù)處理的代碼

責(zé)任編輯:

標簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top