finally 到底是什么時候執行的問題


要弄清finally到底是什么時候執行的,那就一定要把try catch return放在一起來比較了。

實驗代碼:

 public static int ff(){
        Scanner scanner = new Scanner(System.in);
        String str=scanner.next();
        try {
            int i=Integer.valueOf(str);
            i++;
            System.out.println("try");
        }catch (NumberFormatException e) {
            System.out.println("catch");
            return 1;
        }finally {
            System.out.println("finally");
            return 0;
        }
    }

    public static void main(String[] args) {
       System.out.println(ff());
    }

這個代碼你在控制台輸入數字就進入try里面,輸入字母,就進入catch里面。

大家可以分情況來試驗一下,比如什么try里面有return,finally里面有return,到底返回那個return值的問題。

我的結論:

1.執行順序,try->finally->return,或者try->catch->finally->return

2.finally如果有return,這一定是返回finally里面return的值,即使其他地方有return,會執行return的代碼,但不會返回


免責聲明!

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



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