小编典典

最后在使用return时无法到达的语句?

java

这样编译:

class Ex1 {
    public int show() {
        try {
            int a=10/10;
            return 10;
        }   
        catch(ArithmeticException e) {
            System.out.println(e);
        }
        finally {
            System.out.println("Finally");
        }
        System.out.println("hello");
        return 20;
    }
}

另一方面,这不是:

class Ex15 {
    public int show() {
        try {
            int a=10/0;
            return 10;
        }
        catch(ArithmeticException e) {
            System.out.println(e);
        }
        finally {
            System.out.println("Finally");
            return 40;
        }

        System.out.println("hello");
        return 20;
    }
}

并给出不可达的语句System.out.println(“ hello”); 错误。为什么会这样呢?


阅读 441

收藏
2020-11-26

共1个答案

小编典典

最后有一个返回,因此您可能会遇到无法到达的代码块错误。

finally
{   
    System.out.println("Finally"); 
    return 40;
}
System.out.println("hello"); // unreachable code
return 20;

这实际上是Java中的编译时错误。参见第14.20节。

如果由于语句无法访问而无法执行该语句,则是编译时错误。

2020-11-26