Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。
Exception 又分为可检查(checked)异常和不检查(unchecked)异常。
可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。
不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException 之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。
常见的不检查异常(运行时异常):java.lang.RuntimeException类及其子类都是非受检异常,具体如下:
- java.lang.ClassCastException:错误的类型转换异常(强制类型转换)。
- java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常。
- java.lang.NullPointException:空指针访问异常。
- java.lang.ArithmeticException:除零溢出异常。
常见的可检查异常:java.lang.RuntimeException类及其子类都是非受检异常,具体如下:
- java.lang.IOException:操作输入流和输出流时可能出现的异常。
- java.lang.FileNotFoundException:访问不存在的文件异常。
- java.lang.ClassNotFoundExeption:没有找到具有指定名称的类异常。
- java.sql.SQLException:操作数据库时发生的异常。
网友评论