1. 程式人生 > >不能在finally塊使用return

不能在finally塊使用return

錯誤案例

【現象描述】

try-catch塊中永遠返回finally中return的值

【錯誤程式碼】

static boolean f() {
  try {
      return true;
  } finally {
      return false;
  }
}

錯誤分析

在這個應用場景中,不要用return來退出finally語句塊,因為finally語句塊都會被執行到,這樣try程式塊中執行正常也會在finally中退出,不會再回到try程式塊中。

Try-catch的流程說明:

try {
    …
    …
    return true;
}catch(異常){  
   …
} finally {
   …
}
}

1,try-catch-finally,

 如果try語句塊遇到異常,try下面的程式碼就不執行了,轉而執行catch語句塊,執行完再執行finally語句塊,最後結束。 

2,try-finally,

 如果在try語句塊中執行到return語句前一條,未遇到異常,轉而執行finally語句塊,執行完再執行try中的return語句。 

不要用return、break、continue或throw來退出finally語句塊

正確用法

//該方法返回false

static boolean f() {
  try {
      return true;
  } finally {
     //不做return操作
  }
}