java面试题网

普通会员

217

帖子

75

回复

160

积分

楼主
发表于 2019-05-05 15:38:00 | 查看: 5051| 回复: 1

类ExampleA 继承Exception,类ExampleB 继承ExampleA

类ExampleA 继承Exception,类ExampleB 继承ExampleA

有如下代码片断:
try{
throw new ExampleB("b")
}catch(ExampleA e){
System.out.println("ExampleA");
}catch(Exception e){
System.out.println("Exception");
}
}
请问执行此段代码的输出是什么?
输出:ExampleA。(根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常)


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/682_1_1.html

普通会员

217

帖子

75

回复

160

积分
沙发
发表于 2019-05-05 15:39:27

略复杂的一道面试题如下所示,来自《Java编程思想》,说出你的答案吧!
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!

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018