非运行时异常是指 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常(一般情况下不自定义检查异常)。
表 1 和表 2 分别列出了 java.lang 中定义的运行时异常和非运行时异常的类型及作用。
| 异常类型 | 说明 |
|---|---|
| ArithmeticException | 算术错误异常,如以零做除数 |
| ArraylndexOutOfBoundException | 数组索引越界 |
| ArrayStoreException | 向类型不兼容的数组元素赋值 |
| ClassCastException | 类型转换异常 |
| IllegalArgumentException | 使用非法实参调用方法 |
| lIIegalStateException | 环境或应用程序处于不正确的状态 |
| lIIegalThreadStateException | 被请求的操作与当前线程状态不兼容 |
| IndexOutOfBoundsException | 某种类型的索引越界 |
| NullPointerException | 尝试访问 null 对象成员,空指针异常 |
| NegativeArraySizeException | 再负数范围内创建的数组 |
| NumberFormatException | 数字转化格式异常,比如字符串到 float 型数字的转换无效 |
| TypeNotPresentException | 类型未找到 |
| 异常类型 | 说明 |
|---|---|
| ClassNotFoundException | 没有找到类 |
| IllegalAccessException | 访问类被拒绝 |
| InstantiationException | 试图创建抽象类或接口的对象 |
| InterruptedException | 线程被另一个线程中断 |
| NoSuchFieldException | 请求的域不存在 |
| NoSuchMethodException | 请求的方法不存在 |
| ReflectiveOperationException | 与反射有关的异常的超类 |