作者: 青木郎 时间: 2014-4-2 12:00
和格式try 和finally的执行顺序问题:
程序会先执行try的语句,如果try遇到exception或者error后,执行catch中的语句,最后执行finally中的语句
程序在try中遇到return语句后,会将return的结果存在一个缓存中,但是并不会直接就输出,而是先储存起来,等到finally执行完毕后才输出return结果,接入finally中也有return语句,那么就会覆盖掉try中的return值,
public class Test {
public static void main(String args[]){
System.out.println(kkk());
}
public static int kkk(){
int k = 0;
try {
k += 2;
return k;
} catch(Exception e){
k++;
return k;
} finally {
System.out.println(k += 5);
return k;
}
}
}
这个时候结果就会是7作者: anqi 时间: 2014-4-2 12:04
这个问题很经典,我也是云里雾里,查阅了不少内容,发现这竟然会在面试中考到。真是相互学习啊。try语句和finally语句是2个代码块。他们互相不影响。下面的代码的结果是 语句1 语句2 3