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

Dhi*_*raj 3 java exception

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

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

public void alwaysFailsButVoid() {
    throw new RuntimeException("failed");
}
Run Code Online (Sandbox Code Playgroud)

允许这个有什么好处?

Rob*_*een 11

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

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

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


Ore*_*aki 5

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