一直认为子类的异常,子类自身或其父类可以捕获,但是看到一道题就产生了错误的想法,但是通过调试,自己的想法没有错,因为这块使用了多态,父类引用指向子类对象,可能造成视觉模糊,所以当对一段程序有疑问的时候,一定要自己亲手去尝试写一下,印象更加深刻;动手写代码,动手写代码,动手写代码!!!重要的事说三遍。
class Annoyance extends Exception {}
class Sneeze extends Annoyance {}
class SynchronizedDemo {
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!");
}
}
}
调试结果如图:
上面贴两张图就明白是啥意思了,多态是面向对象很重要的一个特性,在设计模式中大多数设计模式使用多态方式来实现。