try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code 会不会被执行,什么时候被执行,在return前还是后?

  • Post author:
  • Post category:其他


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的语句。



版权声明:本文为wangdianyong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。