2.17 异常
小知-- Java为什么将异常分为受检的和运行时异常?这样分的依据和好处是什么? - 知乎 (zhihu.com)
受检异常和非受检异常(从开发角度看,从API看分为error和Exception两类):
区分:通过是否需要进行处理来判断,编译时报错即需要处理(try/throws)就是受检异常
划分标准:
对于那些应该通过修正代码解决的异常,一般称之为非受检异常。其中像error和runtimeException就是非受检,只有在运行时会提示错误,这种一般都是程序员代码编写处理地有问题,像强转出错,空指针,无限递归导致的堆栈异常,数组越界等。
对于无法预料的(各种运行环境)导致的异常,称之为受检异常。最为明显就是IO流处理比如文件找不到(被删或者不存在该路径比如Z盘中某个文件),不管你怎么改代码这个文件(这个文件就可以说是在用户的运行环境提交上来的一个路径)仍然是找不到的,应该交给异常处理器去处理即(try/throws)抛出找不到文件异常。(异常处理器作用就是进行不下去将其抛出,不要在异常处理器中写处理方式抛出即可,违反单一职责原则,导致耦合度提高,代码变复杂。)
1
2
常见异常:
ClassCastException(类转换异常)
IndexOutOfBoundsException(数组越界)
NullPointerException(空指针) ,
ArrayStoreException(数据存储异常,操作数组时类型不一致