try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行
Posted 爱上胡萝卜的猴子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行相关的知识,希望对你有一定的参考价值。
很明显在中间执行!
看看代码,finally中间没有return返回1:
public class ABC { @SuppressWarnings("static-access") public static void main(String[] args) { System.out.println("结果: " + new ABC().test()); } static int test(){ int i = 1; try { System.out.println("try里面的i : " + i); return i; }finally{ System.out.println("进入finally..."); ++i; System.out.println("fianlly里面的i : " + i); //return i; } } }
结果是:
再看代码:finally中间有return返回2:
public class ABC { @SuppressWarnings("static-access") public static void main(String[] args) { System.out.println("结果: " + new ABC().test()); } static int test(){ int i = 1; try { System.out.println("try里面的i : " + i); return i; }finally{ System.out.println("进入finally..."); ++i; System.out.println("fianlly里面的i : " + i); return i; } } }
结果是:
因此,如果finally中没有return则最终会执行try中的return 而且返回值是当时在try中存储的值,若,finally中间有return则返回finally中的值。
另外再看代码:
class Test { public static void main(String[] args) { System.out.println(new Test().test());; } int test() { try { return func1(); }finally{ return func2(); } } int func1() { System.out.println("func1"); return 1; } int func2() { System.out.println("func2"); return 2; } }
结果为:
以上是关于try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行的主要内容,如果未能解决你的问题,请参考以下文章
try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?