先上鍊接:http://cmsblogs.com/?p=1574函數
class Test { public int aaa() { int x = 1; try { return ++x; } catch (Exception e) { } finally { ++x; } return x; } public static void main(String[] args) { Test t = new Test(); int y = t.aaa(); System.out.println(y); } }
問題爲:學習
本身轉述總結下用來之後學習code
先說finally會不會執行,固然會了,由於tryCatch finally 中的finally定義爲不管try代碼塊中怎麼執行finally老是會執行的blog
執行順序是這樣的,當太try代碼塊中的代碼執行到return的時候去執行finally裏面的代碼,此時return的內容會放在局部變量中,等finally代碼執行完以後return的內容將會被從新釋放出來,因此這裏的y值是try代碼塊中return時保存在局部變量裏面的那個值,當try和finally裏都有return時,會忽略try的return,而使用finally的returnio