finally无论如何都会被执行,需要注意以下细节:
情况一:finally中没有return,但是修改try里面的返回值
static public int test(){
int i = 0;
try{
return i;
}catch (Exception e){
}finally {
System.out.println("finally执行了");
i=1;
}
return -1;//不起作用,只是为了编译通过,不报错
}
执行结果:
finally执行了
0
即finally中对try中的return值的修改(i=1)不起作用。
情况二:finally中有return
static public int test(){
int i = 0;
try{
return i;
}catch (Exception e){
}finally {
System.out.println("finally执行了");
return 100;
}
}
执行结果:
finally执行了
100
即finally中的返回值会覆盖try中的返回值。