首页 > 编程 > Java > 正文

java异常分类

2019-11-11 06:51:34
字体:
来源:转载
供稿:网友

异常类结构

异常结构示意图

Throwable 是java 语言中所有Error或Exception的超类。只有当对象是此类或其子类的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类才可以是 catch 子句中的参数类型。

Error 是 Throwable 的子类,一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于Error, 程序应当终止。

Exception代表程序可以处理的异常。

异常分类

在java中,根据在编译时是否要求异常被强制检查来将异常分成两类,Unchecked异常和Checked异常

编译器强制Checked异常必须使用try..catch处理或用throws声明继续抛给上层调用方法处理,而对于Unchecked异常,编译器则不做要求,默认情况下会自动得到处理,所以可以作处理也可以不处理。

Error及其衍生类和RuntimeException及其衍生类属于Unchecked异常,其它的异常均为Checked异常,需要注意Throwable本身也属于Checked异常。

所以,当我们需要自定义一个异常且不需要对它进行处理的时候可以选择继承RuntimeException.

示例

在下例中,Error和RuntimeException是Unchecked异常,所以不进行try…catch或throws也编译正确,但Exception是Checked异常,所以如果不进行处理,就编译错误。

public void f1() { throw new Error();//编译正确}public void f2() { throw new RuntimeException();//编译正确}public void f3() { throw new Exception();//编译错误}public void f4() { try { throw new Exception();//编译正确 } catch (Exception e) { ... }}public void f5()throws Exception { throw new Exception();//编译正确}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表