开发者社区> 问答> 正文

Java中finally在try语句块中的return前执行还是后执行

screenshot
为什么finally没有改变变量a的值。

展开
收起
蛮大人123 2016-03-18 11:53:05 2598 0
2 条回答
写回答
取消 提交回答
  • 精于基础,广于工具,熟于业务。
    推荐回答

    finally 是程序不管正常还是异常都会执行的。第一个return时,a 的值已经保存并固定。执行完finally后程序就输出了返回结果。第二个return并不会执行。

    2019-08-30 15:45:19
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    1、不管有木有出现异常,finally块中代码都会执行;
    2、当try和catch中有return时,finally仍然会执行;
    3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
    4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

    2019-07-17 19:06:20
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载