在網上看到一段代碼java
public class Test { public static int tt() { int b = 23; try { System.out.println("yes"); return b += 88; } catch (Exception e) { System.out.println("error: " + e); } finally { if (b > 25) { System.out.println("b>25: " + b); } System.out.println("finally"); } return b; } public static void main(String[] args) { System.out.print("main method: " + tt()); } }
運行結果:app
yes
b>25: 111
finally
main method: 111函數
到這裏,有不少人會感到納悶:return以後函數不就結束了嗎?怎麼仍是執行finally域內的語句?爲了說明這個問題,咱們先談談finally關鍵字。code
關鍵字finally是try的關鍵字,通常與try成對出現,意味着不管try塊是怎麼退出的,finally子句中的代碼老是會被執行的。所以,finally被用來執行不管是否有異常老是要運行的事件。事件
通常狀況下,return表示了調用方法的結束,但finally是個例外。若是用System.exit()退出程序的話,固然finally就不會執行了。get