class Annoyance extends Exception {}
class Sneeze extends Annoyance {}
class Human {
public static void main(String[] args)
throws Exception {
try {
try {
throw new Sneeze();
}
catch ( Annoyance a ) {
System.out.println("Caught Annoyance");
throw a;
}
}
catch ( Sneeze s ) {
System.out.println("Caught Sneeze");
return ;
}
finally {
System.out.println("Hello World!");
}
}
}
下面公布输出结果以及我的问题,如果没遇到这个问题的可以先想想输出结果是什么
请输入代码
输出
Caught Annoyance
Caught Sneeze
Hello World!
我的思路是这样的,首先抛出 throw new Sneeze();被它的父类Annoyance的catch块接受到,打印Caught Annoyance
接着抛出父类Annoyance对象,该对象不能被子类接受到吧,所以应该是捕捉不到,但是程序运行的结果还是捕捉到了并打印Caught Sneeze。
这是为什么呢?
阿晨1998
哔哔one