为什么 java 允许总是抛出异常的方法将返回类型声明为该异常



为什么Java允许总是抛出异常的方法将返回类型声明为该异常?以下两种方法均有效:-

public RuntimeException alwaysFails() {
    throw new RuntimeException("failed");
}
public void alwaysFailsButVoid() {
    throw new RuntimeException("failed");
}

允许这样做有什么好处?

可以将任何类型声明为方法的返回类型。由于该方法永远不会正常返回,因此这是完全正确的(但具有误导性)。

请注意,Java 编译器通常无法确定您的方法何时可以正常返回(由于停止问题无法解决)。

允许这样做的好处是允许您对类进行子类或继承已预先指定该方法返回类型的接口。这对于面向对象编程至关重要。

返回和投掷不是一回事,它们是独立的。

我没有看到这个问题。 返回类型和可能的异常之间没有编译时交叉检查。 没有关系。 编译器只检查哪些检查的异常是可能的,以及针对异常声明了哪些异常(显然,编译器所做的远不止于此)。

最新更新