在开发使⽤中,异常应该能够很好地帮助我们定位到问题的所在。如果使⽤⼀种错误的⽅式,则bug很难被找到。
异常的分类
JAVA中有三种⼀般类型的可抛类: 检查性异常(checked exceptions)、⾮检查性异常(unchecked
Exceptions) 和 错误(errors)。
1. Checked exceptions:必须通过⽅法进⾏声明。这些异常都继承⾃Exception类。⼀个Checkedexception声明了⼀些预期可能发⽣的异常。
2. Unchecked exceptions:不需要声明的异常。⼤多继承⾃RuntimeException。例如
NullPointerException,ArrayOutOfBoundsException。同时这样的异常不应该捕获,⽽应该打印出堆栈信息。
3. Errors:⼤多是⼀些运⾏环境的问题,这些问题可能会导致系统⽆法运⾏。例如OutOfMemoryError,StackOverflowError。
异常类继承关系
⽤户⾃定义异常
我们应该遵循如下的规范。
1. 当应⽤程序出现问题时,直接抛出⾃定义异常。
抛出自定义异常
2. 将⾃定义异常中的原始异常包装并抛出。
包装异常
错误的做法
1. 不要吞下catch的异常。