A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 常万 中级黑马   /  2012-4-10 13:42  /  1872 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网上看到很多朋友说Java中Error是无法Catch到的,而Java中定义的Error类型又很难测试到,那就估且以为确是如此吧。

但是或许大家都有注意,我们时常会看到这样的代码

try{
...
}catch(Throwable ex){
...
}

其中catch中直接捕捉的是一个Throwable类,打开继承关系看一下,Exception和Error两个类同样是从Throwable类继承而来,那么,也就是说Error应该是可以被捕捉的,下面写个例子证明一下猜测:

package net.moon.demo.errorcatch;

public class Demo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
throw new MyError("My Error");
} catch (MyError e) {
System.out.println(e.getMessage());
}
}

}

class MyError extends Error {

/**
*
*/
private static final long serialVersionUID = 1L;

public MyError() {
super();
// TODO Auto-generated constructor stub
}

public MyError(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}

public MyError(String message) {
super(message);
// TODO Auto-generated constructor stub
}

public MyError(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}

}


执行一下以上代码,正如前面的猜测,Error一样是可以捕捉的,运行代码结果为:
My Error

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
我记得Error 不用被扑捉的因为用户处理不了。Error是重大错误。
回复 使用道具 举报
异常有两种:一种是严重的问题,一种非严重的问题。

对于严重的,java通过Error类进行描述。
        对于Error一般不编写针对性的代码对其进行处理。Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件

对与非严重的,java通过Exception类进行描述。
        对于Exception可以使用针对性的处理方式进行处理。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马