从上图看java把所有的非正常的情况分为两种:异常(Exception)和错误(Error)。Error错误,一般是指与虚拟机相关的问题,如系统崩溃,动态链接失败,虚拟机报错等,这种错误无法恢复或不能捕捉到,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该试图使用try ..catch块来处理Error错误,在定义该方法时,也无须再其throws子句中声明该方法可能抛出的Error以及任何子类。java将异常分为两种:Checked异常和Runtime异常(运行时异常),Checked异常都可以在编译阶段被处理的异常,所以java强制所有的程序处理所有的Checked异常;而Runtime异常则无需处理。Runtime异常可以提醒程序员需要处理所有可能发生的异常。将RuntimeException的异常及其子类称为unchecked异常,所有其他的异常成为checked异常。
执行异常
继承于RuntimeException
检查异常
除了执行异常外,其余的Exception子类属于检查异常类
执行异常及其用途
异常 | 说明 |
RuntimeException | java.lang包中多数异常的基类 |
ArithmeticException | 算术错误,如除以 0 |
IllegalArgumentException | 方法收到非法参数 |
ArrayIndexOutOfBoundsException | 数组下标出界 |
StringIndexOutOfBoundsException | 字符串越界 |
NumberFormatException | String转换为指定的数字类型 |
NullPointerException | 试图访问 null 对象引用 |
SecurityException | 试图违反安全性 |
ClassNotFoundException | 不能加载请求的类 |
检查异常及其用途
异常 | 说明 |
AWTException | AWT 中的异常 |
IOException | I/O 异常的根类 |
FileNotFoundException | 不能找到文件 |
EOFException | 文件结束 |
IllegalAccessException | 对类的访问被拒绝 |
NoSuchMethodException | 请求的方法不存在 |
InterruptedException | 线程中断 |