【Java】先return还是先finally()

  本篇文章为你整理了【Java】先return还是先finally()的详细内容,包含有 【Java】先return还是先finally,希望能帮助你了解 【Java】先return还是先finally。

  之前调试只发现有的方法执行完return语句后再执行finally,但是没有细究

  最近debug代码的时候发现,不同返回类型的方法,return和finally执行顺序竟然不一样

  先看返回类型为void的执行顺序:

  

  继续执行:

  

  继续:

  

  发现执行顺序是:

  try中代码- finally代码- try中的return,是先执行finally,再执行return

  再看返回类型为int类型的执行顺序:

  

  继续执行:

  

  发现竟然直接到了return,继续:

  

  开始执行finally,执行顺序为:

  try中代码- try中return- finally,而且此方法返回值依然为1,x=100会执行,但不会返回

  原因:

  void方法的return就是返回,return是方法的最后一步,当然先执行finally

  int方法或其他有返回值的方法,return实际是将返回值赋值给一个匿名变量,并在最后返回前加载该变量到栈顶,然后执行返回,所以debug执行testx时,执行return x并不是直接返回,只是把x的值赋给了一个匿名变量

  补充:

  JDK 7之后提供了try with resource的方式,会在代码块执行完毕后执行Closeable的close方法,释放资源

  所以finally的在业务上的使用场景其实并不多,此处解释为了方便源码调试时的理解

  

   posted on 2023-03-06 16:53马儿跑

  阅读(89)

  评论(0)

  编辑

  收藏

  举报

  以上就是【Java】先return还是先finally()的详细内容,想要了解更多 【Java】先return还是先finally的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: