为了账号安全,请及时绑定邮箱和手机立即绑定

关于返回值

finally  里面的return 语句和主函数里面的语句冲突吗?

正在回答

3 回答

①如果finally{}块中有return语句,只执行finally{}块中的return语句

②如果finally{}块中没有return语句,如果try{}有异常,则返回catch{}中的return语句,不然执行try{}中return语句在这种情况下,return语句块是在finally{}之后执行


1 回复 有任何疑惑可以回复我~

当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下:

1、不管try块、catch块中是否有return语句,finally块都会执行。
2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“finally block does not complete normally”。

3、如果finally块中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,并且不会捕获异常。

 

结论,应避免在finally块中包含return语句。如果你在前面的语句中包含了return语句或重新抛出了异常,又在finally块中包含了return语句,说明你概念混淆,没有理解finally块的意义。

http://blog.csdn.net/chh_jiang/article/details/4557461

0 回复 有任何疑惑可以回复我~

不冲突,就算try里面有return,还是会执行finally

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

关于返回值

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信