一尘不染

捕获和最终返回语句的行为

java

请参见以下代码,并解释输出行为。

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

catch块中的return语句会怎样?


阅读 239

收藏
2020-09-09

共1个答案

一尘不染

它被中的一个覆盖finally,因为finally它在所有其他操作之后执行。

这就是为什么,经验法则- 永不从回归finally。例如,Eclipse显示了该代码段的警告:“最终阻止无法正常完成”

2020-09-09