首页 > 解决方案 > 用子类中的已检查异常覆盖抛出未检查异常的超类方法

问题描述

我们可以用子类中的已检查异常覆盖抛出未检查异常的超类方法吗?

标签: java

解决方案


你不能。

子类方法不能抛出throws基超类方法的子句未涵盖的任何已检查异常。

换句话说,子类方法只有出现在throws超类方法的子句中或者是出现在该子句中的异常的子类时,才能抛出已检查异常throws

这是有道理的,因为超类的用户只知道超类方法的契约,那么他们怎么知道他们必须捕获一些throws在超类条款中没有提到的额外异常呢?他们不能也不应该知道覆盖该方法的所有子类(其中一些可能尚未编写)。


推荐阅读