不能在finally塊使用return
阿新 • • 發佈:2019-01-03
錯誤案例
【現象描述】
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操作 } }