172.16.0.151_20200904-陈政平

问题

public class Magpie {
public int wusuiwei1() {
    int a = 100 ;
    try {
        return a ;
    } catch( Exception e ) {
        return -a;
    } finally {
        ++a ;
    }
}

public int wusuiwei2() {
    int a = 100 ;
    try {
        return a ;
    } catch( Exception e ) {
        return -a;
    } finally {
        return ++a ;
    }
}

public static void main(String[] args) {
    
    Magpie m = new Magpie();
    int x = m.wusuiwei1();
    System.out.println( x );
    
    int y = m.wusuiwei2();
    System.out.println( y );
}
}

try {
return a ; 将a压入栈底
} catch( Exception e ) {
return -a;
} finally {
++a ;将++a压入次栈底
}
}

出栈输出的时候会将++a先输出,然后是return a,所以输出的是a的值不是++a的值

但是当有return输出的时候,后面的程序不再执行,当 不出现异常时执行 return a

执行出现异常时进入catch语句,执行return -a

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1