關於Java中try-catch-finally-return語句的思考


  我們知道return語句用在某一個方法中,一是用於返回函數的執行結果,二是用於返回值為void類型的函數中,僅僅是一個return語句(return ;),此時用於結束方法的執行,也即此return后的語句將不會被執行,當然,這種情況下return語句后不能再有其它的語句了。 

    public static int print() {
        int c = 1;
        try {
            c++;
            System.out.println("try執行中...");
            return c+100; //--------1
        } catch (Exception e) {
            e.printStackTrace();
//return c; //--------4 }
finally { c++; System.out.println("finally執行中..."); return c; //--------2 } //return c; //---------3 }

  程序執行的結果為:

run:
try執行中...
finally執行中...
3
成功構建 (總時間: 0 秒)

  注意,2與3位置處的return語句只能有一個,並且2、3、4中必須有一個return語句,如果2出執行后方法就結束了,3處的語句得不到執行。

   try語句塊執行到1處時,會將會將函數的返回值存放到另外一個臨時變量(不同與c的變量,它的值為102)中,由於未發生異常,緊接着將會執行finally語句塊,2處又遇到一個語句塊,並將返回值存放到臨時變量(值為3)中,最終返回的是此處的臨時變量的值,此處return執行完成后,該方法結束。  

  public static int print() {
        int c = 1;
        try {
            c++;
            System.out.println(c);
            System.out.println("try");
            return c+100; //--------1
        }finally {
            c++;
            System.out.println(c);
            System.out.println("finally");
           
        }
    }

  上述代碼中finally語句塊中沒有return語句,函數最終返回的是第一個臨時變量的值,也即102,執行結果如下:

run:
try
finally
102
成功構建 (總時間: 0 秒)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM