1. 如果finally里有return,执行finally里的return,忽略try和catch里的return
finally会在try代码块的return之前执行
public class Main{
public static void main(String[] args){
System.out.println(get());
}
@SuppressWarnings("finally")
public static int get() {
try {
int a = 1/0;
}
catch (Exception e) {
// TODO: handle exception
return 1;
}
finally {
return 2;
}
}
}
输出:2
2.
public class Main{
public static void main(String[] args){
System.out.println(get());
}
@SuppressWarnings("finally")
public static int get() {
int i = 1;
try {
return i;
}
catch (Exception e) {
// TODO: handle exception
return 1;
}
finally {
i++;
}
}
}
输出:1(try里return时,会先将i保存起来作为副本,所以返回1,i++还是会执行)