黑马程序员技术交流社区
标题:
《分享》Java中的Error能不能被Catch?
[打印本页]
作者:
常万
时间:
2012-4-10 13:42
标题:
《分享》Java中的Error能不能被Catch?
网上看到很多朋友说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
作者:
黑马老兵
时间:
2012-4-10 13:57
我记得Error 不用被扑捉的因为用户处理不了。Error是重大错误。
作者:
未长法
时间:
2012-4-10 16:24
异常有两种:一种是严重的问题,一种非严重的问题。
对于严重的,java通过Error类进行描述。
对于Error一般不编写针对性的代码对其进行处理。Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件
对与非严重的,java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2