finally会在return前执行, 但是return的路径会先于finally形成. 代码解析如下:
public class Test14 {
public static void main(String[] args) {
System.out.println(method());
}
public static int method() {
int a = 10;
int b = 0;
try {
System.out.println(a / b);
} catch (ArithmeticException e) {
//进入到catch语句,此时return 20(不是return a)路径已经形成,
//然后执行finally a=30,但是return的是20不是a-30,所以return值不影响
a = 20;
return a;
} finally {
a = 30;
//如果加上下面的return a,则替换掉原先的return路径,变为return 30.
//return a;
}
return 0;
}
}