JavaのFinallyのいくつかの詳細

2160 ワード

このブログの例は『コード出高効率Java開発マニュアル』から来ており、この本は確かに読みやすい.細部が多い.
コード1を見てみましょう.

public class TryCatchFinally {
    public static void main(String[] args) {
        int temp = finallyNotWork();
        System.out.println(temp);
    }
    public static int finallyNotWork(){
        int temp =10000 ;
         try {
              throw new Exception();
         }catch (Exception e){
             return ++temp ;
         }finally {
             temp =99999;
             System.out.println(temp);
         }
    }
}

99999
10001

,finally 。 main temp 10001, ,finally return 。①、 , , catch , return ++temp(10001) 。② finally , temp 99999,③ finally 10001, 99999。 temp , 99999.


 


public class TryCatchFinally {
    static int x =1 ;
    static int y =10 ;
    static int z =100 ;

    public static void main(String[] args) {
        int value = finallyReturn();
        System.out.println("value = " + value);
        System.out.println("x = " + x);
        System.out.println("y = " + y);
        System.out.println("z = " + z);
    }
    private static int finallyReturn() {
        try {
            return ++x ;
        }catch (Exception e){
            return ++y ;
        }finally {
            return ++z ;
        }
    }
}

value = 101
x = 2
y = 10
z = 101

return ++x ;  , finally return 。 finally return, ++z , 101 。 x , ++x , 2 。

 

    finally , , , 。 finally return , , , finally return 。