当前位置: 首页 > 图文教程 > 认证考试 > java认证 > 一道SCJP考题,要考SCJP的不能不看

java认证
软件工程之Java实现策略
讲述java语言中内部类的研究
简单介绍log4j一般的使用步骤
入门:Java语言中常见的十大误解
入门:Java代码编写的一般性指导
编写跨平台Java程序注意事项
java语言的网络功能与编程
java语言的文件操作方法
Java程序性能和速度优化实例
异常问题在Java编程中处理的优劣
处理Java及其相关字符集编码的问题
解读Java语言灵巧指针与垃圾回收
用于Java的SCA客户机和实现模型
开发中对于Java中文问题的几条分析原则
JAVA深入了解:JavaBeans 增加XPath功能
网络方式安装Linux(CentOS)系统的方法
一篇介绍 Java Socket 编程的经典文章
Java程序中用Servlet容器实现程序监听
使用Java进行图像处理 图像编码输出
JAVA认证:SCJP310-055中文考纲

java认证 中的 一道SCJP考题,要考SCJP的不能不看


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 55 ::
收藏到网摘: n/a

这道题目很有意义,我转贴到这儿.
  谁能告诉我这样的代码,编译为何不会报错?
  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的.