我辅导的一位学生使用的 Java 书籍包含以下内容(Blue Pelican Java 版本 3.0.5b Charles Cook):
如果你有一个方法将 IOException 抛出到调用链中的下一层,我们应该知道除了 IOException 被抛出到下一层之外,它的所有子类也被抛出到链中的下一层。
这显然是错误的,但它是正确的吗?该陈述的一个版本是在学生的考试中提出的,并且应该是真实的。
此外,以下代码似乎是该声明的反例:
public class ExceptionsTester {
public static void main(String[] args) {
try {
throw new IOException();
} catch (FileNotFoundException e) {
System.out.println("Subclasses thrown");
} catch (IOException e) {
System.out.println("Subclasses not thrown");
}
}
}