请参见以下代码,并解释输出行为。
public class MyFinalTest { public int doMethod(){ try{ throw new Exception(); } catch(Exception ex){ return 5; } finally{ return 10; } } public static void main(String[] args) { MyFinalTest testEx = new MyFinalTest(); int rVal = testEx.doMethod(); System.out.println("The return Val : "+rVal); } }
结果是返回Val:10。
Eclipse显示警告:finally block does not complete normally。
finally block does not complete normally
catch块中的return语句会怎样?
它被中的一个覆盖finally,因为finally它在所有其他操作之后执行。
finally
这就是为什么,经验法则- 永不从回归finally。例如,Eclipse显示了该代码段的警告:“最终阻止无法正常完成”