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
近期评论