記錄一下 try catch return 執行問題

先上鍊接: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);
    }
}

 問題爲:學習

  • 若是在 try 語句塊裏使用 return 語句,那麼 finally 語句塊還會執行嗎?(果你的答案是不會執行,請務必要看下去 ^_^)
  • 若是執行,那麼是怎樣實現既執行 return 又執行 finally 的呢?(若是你的答案是不知道,請繼續看下去!!)
  • 上面的程序輸出爲何是2?( 若是不知道,繼續看下去)
  • 在網上看到還有人還問「是先執行return仍是先執行finally?」的
    (我的以爲,若是知道finally會執行就能夠得出是,先執行finally再執行return的。由於,若是先執行return,那麼整個函數都跳出了,那麼還怎麼執行finally?^_^)

        本身轉述總結下用來之後學習code

        先說finally會不會執行,固然會了,由於tryCatch finally  中的finally定義爲不管try代碼塊中怎麼執行finally老是會執行的blog

        執行順序是這樣的,當太try代碼塊中的代碼執行到return的時候去執行finally裏面的代碼,此時return的內容會放在局部變量中,等finally代碼執行完以後return的內容將會被從新釋放出來,因此這裏的y值是try代碼塊中return時保存在局部變量裏面的那個值,當try和finally裏都有return時,會忽略try的return,而使用finally的returnio

相關文章
相關標籤/搜索