当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,缘由分析以下:orm
一、无论try块、catch块中是否有return语句,finally块都会执行。
二、finally块中的return语句会覆盖前 面的return语句(try块、catch块中的return语句),因此若是finally块中有return语句,Eclipse编译器会报警告 “finally block does not complete normally”。ip
三、若是finally块中包含了return语句,即便前面的catch块从新抛出了异常,则调用该方法的语句也不会得到catch块从新抛出的异常,而是会获得finally块的返回值,而且不会捕获异常。编译器
结论,应避免在finally块中包含return语句。若是你在前面的语句中包含了return语句或从新抛出了异常,又在finally块中包含了return语句,说明你概念混淆,没有理解finally块的意义。编译