JAVA练习题:答疑解惑一道SCJP考题Java认证考试

文章作者 100test 发表时间 2010:01:02 07:17:35
来源 100Test.Com百考试题网


谁能告诉我这样的代码,编译为何不会报错?

lass 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的

相关文章


Java反射测试代码Java认证考试
Java的静态方法和非静态方法Java认证考试
用JFreeReport做报表实践Java认证考试
eclipse使用ant编译时的乱码问题Java认证考试
JAVA练习题:答疑解惑一道SCJP考题Java认证考试
JSF请求处理过程(一)FacesServlet初始化Java认证考试
JSF请求处理过程(二)请求处理过程总览Java认证考试
JDBC连接MySQL数据库关键的四个步骤Java认证考试
AWT,SWT和Swing都有相似的事件监听器Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛