一道SCJP考题,要考SCJP的不能不看!
日期:2007年5月2日 作者:
查看:[大字体 中字体
小字体 ]
这道题目很有意义,我转贴到这儿. 谁能告诉我这样的代码,编译为何不会报错? class Base { public void aMethod() throws ClassNotFoundException { } } public class Derived extends Base { public void aMethod() throws RuntimeException { } } 我这道题目是这样的: 父类Base的方法aMethod?出一个ClassNotFoundException异常 子类Derived重写aMethod方法并?出一个RuntimeException异常 如果按照Java的Exception理论,那么应该是: 子类Derived的aMethod方法要么不?异常, 要么就必须?出ClassNotFoundException异常或是ClassNotFoundException异常的子类才行. 而RuntimeException并不是ClassNotFoundException的子类. 它们没有任何的继承关系. 按照Java的Exception理论,应该编译不能通过. 但是现在可以编译通过,请问这是为什么? runtimeexception是自动throws的,不需要declare(decalre了效果也不会有任何变化),即使声明了throws runtime exception,编译器也不会按通常的规则处理。所以上述代码的等效形式是: class Base { public void aMethod() throws ClassNotFoundException { } } public class Derived extends Base { public void aMethod() { } } ******答案***** java中的异常可以分为3种类型: 1。从Exception类直接派生出来的异常类 2。运行时刻类(RuntimeException) 3。I/O异常类 你说的那个理论对于1,3成立 但是RuntimeException是没有必要去catch的.
上一篇:课程介绍(3):SL-265 结构化程序员的Java技术
下一篇:SCJP:“菜鸟”也能玩Java
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页 ] [关闭窗口 ] 转载请注明来源:http://www.abcdown.net