Java - 若try中有return语句,finally会执行吗?在return之前还是之后呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - 若try中有return语句,finally会执行吗?在return之前还是之后呢?相关的知识,希望对你有一定的参考价值。

会执行,在方法return动作之前,return语句执行之后,若finally中再有return语句,则此方法以finally的return作为最终返回,若finally中无return语句,则此方法以try的return作为最终返回。
P:方法的返回值以最后一个执行return语句的运算结果为准,返回值一旦确定,不随之后执行的代码影响。
测试程序:
public static void main(String[] args) {    
  System.out.println(test());
  System.out.println("finish..");
 }
private static int test() {
  int b = 20;
  try {
   System.out.println("try block");
   return b += 80;
  }
  finally {
   System.out.println("finally block");
   if (b > 20) {
    System.out.println("b = " + b);
   }
    // 若此行取消注释,参见输入2
    // return 1;
    // 若此行取消注释,参见输出3
    // b --; // 方法的返回值在finally之前已经定了(可以理解为每个方法都有一个用来保存return值的内存空间),在此再修改b并不会影响返回值。
  }
 }
输出:
try block
finally block
b = 100
100
finish..
输出2:
try block
finally block
b = 100
1
finish..
输出3:
try block
finally block
b = 100
100
finish..

以上是关于Java - 若try中有return语句,finally会执行吗?在return之前还是之后呢?的主要内容,如果未能解决你的问题,请参考以下文章

java异常中try或catch语句中可以有return语句吗?如有return会执行finall

Java面试题-try...finally结构中try中有return那么finally中的语句的执行时间问题

Java面试题-try...finally结构中try中有return那么finally中的语句的执行时间问题

Java笔试面试总结—trycatchfinally语句中有return 的各类情况

Java中try catch finally语句中含有return语句的执行情况

Java中try catch finally语句中含有return语句的执行情况