public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
int a= 1;
try{
a=2/0;
return a;
}catch (Exception e){
a=3;
return a;
}finally {
a=4;
System.out.print("+nowcoder");
// 有return就返回4,没有就返回3
return a;
}
}
如果finally中没有return,按照catch中的值返回
finally中有return,按照finally中修改的值返回
一旦在finally块中使用了return、throw语句,将会导致try块、catch块中的return、throw语句失效
当程序运行到try块、catch块中的return、throw语句时,不会立即结束并返回,而是去执行finally块(如果有)中的语句,然后再回过头来执行return(但是不会返回finally中修改的值,而是返回catch中的旧值)
但是如果finally中return或者throw了,会导致方法的立即终止(此时的返回值也是finally中修改的值)