异常简介:
异常其实就是一种消息,是承载了系统问题,故障以及未按照指定动作执行的消息。
Throwable:所有异常类的共同祖先
这里,需要提一下,Exception中有一个重要的子类,RuntimeException,此类是JVM常用操作引发的错误,如对象为空,或者数据越界,分别会触发NullPointException 和 ArrayIndexOutOfBoundExce
ption。
声明异常规则:可检测异常必须
声明,但是非检测异常则没有要求。
异常类层次结构:
- Exception:应用程序中出现的可预测的,可恢复的问题,一般是在特定的方法和操作中出现。
- Error:应用程序中比较严重的错误,合理的应用程序不应该尝试捕获,出现的话属于反常情况。大多数错误是代码在运行过程中,JVM发生的问题,如OutOfMemoryError。
可检测异常/非检测异常
- 可检测异常:可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则
- 非可检测异常:主要包括Error和RuntimeException.
Error是应用程序无法解决的严重问题,固不需要申明,而RuntimeException一方面是因为,JVM频繁操作导致的,例如,如果对于空异常需要
申明&捕捉,那么代码里面会到处都是try/catch/finally的代码块,另外一方面,是由于它代表的问题,不一定要通过异常的方式来解决,其
实在代码里面是可以避免的,如:NullPointException,如果使用之前,先判断下对方是否为空,则完全可以避免,还有除法分母为0的情
况,也就不需要ArithmeticException了。