先贴上代码:
class Annoyance extends Exception{}
class Sneeze extends Annoyance{}public class test {
public static void main(String[] args) {
//catch实际对象
try{
throw new Sneeze();
}catch(Sneeze s){
System.out.println("Caught Sneeze!");
}catch(Annoyance a){
System.out.println("Caught Annoyance!");
}
//catch派生对象
try{
throw new Sneeze();
}catch(Annoyance a){
System.out.println("Caught Annoyance!");
}
}
}
输出如下:
解释:
抛出异常的时候,异常处理系统会按照代码的书写顺序找出“最近”的处理程序。找到匹配的处理程序之后,它就认为异常将得到处理,然后就不再继续查找。
查找的时候并不要求抛出的异常同处理程序所声明的异常完全匹配。派生类的对象也可以匹配其基类的处理程序