1. 程式人生 > >Java----finally

Java----finally

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