finally块的问题(finally block does not complete normally)

Posted miye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了finally块的问题(finally block does not complete normally)相关的知识,希望对你有一定的参考价值。

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

当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块的意义

以上是关于finally块的问题(finally block does not complete normally)的主要内容,如果未能解决你的问题,请参考以下文章

为啥 try..catch..finally 块的 finally 节在 catch 之前运行?

如何解决 PHP 中缺少 finally 块的问题?

关于 Java 中 finally 语句块的深度辨析

Finally语句块的运行

finally块

Java避坑指南:finally块的陷阱及正确的关闭资源方式小