深入浅析Java中finally语句与return的执行顺序-创新互联

深入浅析Java中finally语句与return的执行顺序?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

10年积累的成都网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有龙海免费网站建设让你可以放心的选择与我们合作。

(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。

(2)在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。

当然还有很多人探讨Finally语句的执行与return的关系,颇为让人迷惑,不知道finally语句是在try的return之前执行还是之后执行?我也是一头雾水,我觉得他们的说法都不正确,我觉得应该是:finally语句是在try的return语句执行之后,return返回之前执行。这样的说法有点矛盾,也许是我表述不太清楚,下面我给出自己试验的一些结果和示例进行佐证,有什么问题欢迎大家提出来。

1. finally语句在return语句执行之后return返回之前执行的。

public class FinallyTest1 {

  public static void main(String[] args) {
    
    System.out.println(test1());
  }

  public static int test1() {
    int b = 20;

    try {
      System.out.println("try block");

      return b += 80; 
    }
    catch (Exception e) {

      System.out.println("catch block");
    }
    finally {
      
      System.out.println("finally block");
      
      if (b > 25) {
        System.out.println("b>25, b = " + b);
      }
    }
    
    return b;
  }
  
}

当前文章:深入浅析Java中finally语句与return的执行顺序-创新互联
文章路径:http://pwwzsj.com/article/ecdsd.html