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的语句。
本文深入探讨了Java中finally语句的执行时机及其与return语句的交互,通过具体代码实例展示了finally语句在try块内执行的特点,并解释了当finally与return同时存在时的返回行为。
1129

被折叠的 条评论
为什么被折叠?



