0
以下语句来自java中的思维,“派生类构造函数无法捕获由其基类构造函数抛出的异常。”但我能够抓住它。任何人都可以解释我出错的地方吗?“派生类构造函数无法捕获由其基类构造函数抛出的异常。”但能够抓住它
class Base {
Base() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
}
class Derived extends Base {
Derived() throws CloneNotSupportedException, RuntimeException {}
public static void main(String[] args) {
try {
Derived d = new Derived();
}
catch(CloneNotSupportedException e) {
e.printStackTrace();
}
catch(RuntimeException re){}
}
}
输出:
java.lang.CloneNotSupportedException
at Base.<init>(Coffee.java:4)
at Derived.<init>(Coffee.java:9)
at Derived.main(Coffee.java:14)
这本书是正确的。当我修改我的派生类时,你给了。它给我complie时间错误,“调用超级必须是构造函数中的第一个语句”,所以我想我们不能捕获该异常 – user2899676 2014-09-06 11:42:09
正是我的答案的要点。最好的学习方法是找出你自己。 – 2014-09-06 11:45:14