finally中有return
public static int getNum(){
try{
return 1;
}catch (Exception ex){
return 2;
}finally {
return 3;
}
}
结果是3,因为finally中的return把上面的结果都覆盖了。所以编程规范中,不在finally中执行return。
finally无return,修改变量
public static int getNum(){
int a = 1;
try{
return a;
}catch (Exception ex){
return a;
}finally{
++a;
}
}
最后获取到的是1,因为try中有return,会把1给暂存,返回的是常量1,后面对a的修改并不会影响到前面的return。除非引用数据类型
网友评论