try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
答案是会执行,在return前
再看看这段程序,会返回什么呢
private static int testfinally(){
try{
return 1;
}catch (Exception e){
return 2;
}finally{
return 3;
}
}
答案是返回3
那么这样呢?
private static int testfinally(){
try{
int a=4/0;
return 1;
}catch (Exception e){
return 2;
}finally{
return 3;
}
}
结果也是返回3
所以看起来结果像是这样,编绎时会把finally里的语句加到try和catch语句块的return之前去执行,如果finally中含有return那么会执行finally中的return。