为什么 Java 不支持在方法签名中添加 `throws`?

Why doesn't Java support adding `throws` to the method signature?

这个问题在我脑海中盘旋了好几天。

在继承和多态性方面,Java 通过桥接方法概念支持协变 return 类型。

但是为什么他们不对超类中没有 throws 子句的方法实现类似桥接方法的概念,但是当它在子类。或者他们不能将 throws 添加到方法签名来解决这个问题。

来自 this post,

我的想法是,当重写超类中的方法时,已检查的异常 子类方法声明的不能比超类方法更通用。

但是为什么我们不能覆盖一个在超类中没有 thorws 的方法,而是在子类中有它。

为什么我的建议不能应用于Java机制。

谁能给我解释一下

JVM 验证程序会忽略 throws 子句,因此不需要桥接或其他合成方法。

编译器强制执行抛出规范不比重写方法更宽的语言约束。这与 return 类型(自 1.5 起)的协变行为相同。链接问题的答案说明了为什么会这样。