关于我们 』『 人才招聘 』『 学校地图 』『 NCIE介绍 』
首 页 | 新闻中心 | 课程详解 | 教学模式 | 师资团队 | 教学园地 | 就业专栏 | 在线报名 | 技术专栏 | 留言反馈 | 学员博客
咨询电话:028-86615118 ┆ 24小时咨询电话:028-86854416 ┆ 就业服务:028-86854416 ┆ 咨询群:35540887 ┆ 联系我们公交线路查询
课程推荐
在线咨询
咨询群: 35540887
杨老师: 我是杨老师,咨询请点这里
韩老师: 我是韩老师,咨询请点这里
最新开班信息
成都软件开发学习班
最新免费活动
学员交流
朗沃新闻
 

答疑解惑:一道SCJP考题

录入时间:07-03-27 10:50:28  责任编辑:admin
 谁能告诉我这样的代码,编译为何不会报错?

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的.(www.itpub.net)
〖友情连接〗

朗沃教育(重庆天熙) 中国国学网 大学生创业就业中心 四川行业通 大中华成都人才网
J2ME世界 Sun 宇辉人力资源网 诚信人才网 中华英才网
无忧工作网 中国程序员社区 成都博科购书网 人事部信产部653工程 国家信息产业部NCIE

杨老师:
韩老师:
李老师:
何老师:
欧阳老师: