finally语句总会执行的除非遇到一些特殊情况如Systemexit(0),但是它是什么时候执行呢?在return前还是后呢?看代码
public class Test{
public static void main(String[] args) {
System.out.println(test());
}
@SuppressWarnings(“finally”)
public static int test() {
int n = 1;
try {
return n;
} catch (Exception e) {
// TODO: handle exception
} finally {
++n;
System.out.println(“finally:”+n);
}
return 0;
}
}
输出的结果是
finally:2
1
可以知道是在return语句之前执行的
当try和finally中都有return语句会返回哪个呢?还是看例子将上面的代码该一下
public class Test {
public static void main(String[] args) {
System.out.println(test());
}
@SuppressWarnings(“finally”)
public static int test() {
int n = 1;
try {
return n;
} catch (Exception e) {
// TODO: handle exception
} finally {
return ++n;
}
}
}
结果输出2
总结:return语句并不一定就结束一段程序,当它和finally一起使用但是finally语句中无return时会先等finally语句执行完成后再返回值,
当finally语句中有return语句时会直接返回finally中return的语句。