我知道要问这个问题有点苛刻,但我正在学习考试,并没有真正了解这个例外是如何运作的。
class Axception extends Exception {};
class Bxception extends Axception {};
public class Exceptions {
public static void main(String [] a) throws Exception {
System.out.println("A");
try {
System.out.println("B");
try {
System.out.println("C");
throw new Exception();
} catch (Axception a1) {
System.out.println("D");
throw a1;
}
finally{
System.out.println("E");
}
} catch (Bxception e) {
System.out.println("F");
} catch (Exception e) {
System.out.println("G");
}
System.out.println("H");
}
}
感谢您的帮助!
答案 0 :(得分:0)
输出应为A B C E G H
应该很容易理解为什么命令是A B C.之后你抛出一个异常对象。 但是因为你试图在子类对象Axception a1中捕获它,所以它不会被捕获。因此它不会打印D也不会抛出a1。然后最终将被处理,无论如何。因此,E。
再次尝试在子类对象中捕获Exception对象,即Bxception e,它不会被捕获。因此它不会打印F.
接下来,您尝试在Exception对象中捕获它,因此它将被捕获并将打印G。
由于现在发现异常,方法应该很高兴去打印H.
因此A B C E G H。
希望现在很清楚。