Exception -- 01 -- Error和Exception的区别
在日常的开发过程中,我们会碰到许多错误异常,可分为两类:一类是 Error,一类是 Exception,这里让我们来了解下它们之间的区别
一、Java 异常体系
二、Error 和 Exception 的区别
-
Error
- 是程序无法处理的系统错误,编译器不做检查
-
Exception
- 是程序可以处理的异常,捕获后可能恢复
三、RuntimeException 和非 RuntimeException 的区别
-
RuntimeException
- 不可预知的,程序应当自行避免
-
非 RuntimeException
- 可预知的,编译器编译时会自动校验
四、常见的 Error 以及 Exception
-
Error
异常 含义 NoClassDefFoundError 找不到类定义的异常 StackOverflowError 深递归导致栈被耗尽而抛出的异常 OutOfMemoryError 内存溢出异常 -
RuntimeException
异常 含义 NullPointerException 空指针异常 ClassCastException 类型强制转换异常 IllegalArgumentException 非法参数异常 IndexOutOfBoundsException 下标越界异常 NumberFormatException 数字格式异常 -
非 RuntimeException
异常 含义 ClassNotFoundException 找不到指定类的异常 IOException IO 操作异常
五、异常处理机制
-
抛出异常
- 创建异常对象,交由运行时系统进行处理
-
捕获异常
- 寻找何时的异常处理器来处理异常,否则终止运行
六、异常处理原则
-
具体明确
- 抛出的异常应能通过异常类的类名和异常信息来准确说明异常的类型和产生异常的原因
-
提早抛出
- 应尽可能早的发现并抛出异常,便于精确定位问题
-
延迟捕获
- 异常的捕获和处理应尽可能延迟,让掌握更多信息的作用域来处理异常