Java----finally
阿新 • • 發佈:2018-11-13
cep exception 代碼塊 如果 使用 turn 返回值 new 語句
1.無return語句的執行順序
try{ //可能拋出異常 }catch(Exception e){ //捕獲異常 }finally{ //不管有無異常都執行 }
finally內的代碼不管有無異常都會執行,具體來說
- 如果沒有異常,在try代碼塊執行完畢後執行;
- 如果有異常且被catch捕獲,在catch代碼塊執行完畢後執行;
- 如果有異常單沒有catch捕獲,在提交給上層調用者前執行;
2.帶有return的語句執行順序
- 如果在try或者cathc裏面有return語句,finally沒有return,則先執行finally代碼塊,然後進行return,但是finally並不能改變return的返回值;
- 如果finally裏面也有return,不僅會覆蓋掉try和catch的返回值,並且掩蓋try和catch的異常,如果finally裏面也有異常,會原異常就會被覆蓋掉;
- 如果try中是System.exit(0),則finally不會被執行;
- 如果try-finally所在的線程被殺死了,finally也不會被執行。
3.註意
- 不要在finally中使用return語句;
- finally總是執行的,除非程序或者線程被中斷了;
- try-catch-finally中,catch並不是必須的,可以只有try-finally,表示的是異常向上傳遞。
參考:https://www.cnblogs.com/daixiaotian/p/6943904.html
Java----finally