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

标签 java exception

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

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

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

允许这样做有什么好处?

最佳答案

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

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

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

关于java - 为什么 java 允许总是抛出异常的方法将返回类型声明为该异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844422/

相关文章:

c# - Oracle Odp.Net 在调用无效包中的过程时出现未报告的错误

java - 如何在增强的 for 循环中捕获异常并重新启动该循环的进程?

java - Spring Boot 异常处理

java - java和oracle XE之间的OCI和THIN驱动连接与数据源连接有什么区别?

java - 这个 Java 枚举的使用/设计是否正确?

java - 数组索引存储在新数组中

c++ - 默认初始化抛出异常

Java 数字除法

java - 找不到适合 requestLocationUpdates 的方法

java - Mac OSX 上的 Android Studio 模拟器 (AVD) : AVD icon quickly appears and immediately disappears