JAVA的Exception理解

JAVA异常

1. java异常API结构

JAVA的Exception理解

由上图可知:Throwable接口为异常的基类,Error类和Exception为子类,分别表示错误和异常。Error表示无法处理的错误,例如JVM错误,不需要程序员处理。Exception表示运行过程中发生的错误,导致程序无法按照原有流程进行或者程序终止。

2. Exception分为受检Exception和运行时Exception。

(1) 受检Exception为编译时检查的异常,多为程序的运行环境导致的异常,例如:IOException,SQLException以及ClassNotFoundException等。JAVA要求程序员必须处理该种异常。

(2) 运行时异常为程序在编译时不检查的异常,例如除0的ArrithmeticException,NullpointerException以及ClassCastException等。JAVA不要求程序员强制处理该种异常,当然也可以处理。

3. 处理Exception的方式

(1) 利用throws声明方法可能抛出的异常,在方法中可以使用try...catch结构捕获异常,使用throw抛出异常;也可以在方法中不处理,欺骗编译器,实际上没有真正地抛出异常。

(2) 在方法中可以使用try...catch结构捕获异常,然后处理异常。

JAVA中鼓励程序员将方法中可能抛出的异常告诉使用该方法的客户端,从而使得调用者可以确切地知道该用什么样的代码处理处理潜在的异常。因此才有异常声明关键字throws。

4. 抛出异常的几个事件

首先,使用new在堆上创建异常对象;

然后,当前执行路径被终止;

同时,弹出异常对象的引用;

最后,异常机制接管程序后,开始异常处理程序继续执行程序。