Java异常层次与异常分类
一、Java的异常层次
Java的异常层次如下图所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP350dRpmT1UERPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5YTNwMzMycTM2IjMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Java简化的异常层次结构如上,需要注意的是所有类都是从Throwable继承而来,下一层则分为两个结构,Error和Exception。
Error类层次描述了Java运行时系统的内部错误和资源耗尽错误,这种错误除了简单的报告给用户,并尽力阻止程序安全终止之外,一般没有别的解决方法。
二、Java的异常分类:checked异常与Runtime异常
-
Runtime异常(unchecked异常)
Runtime异常是runtime阶段碰到的异常,在编译的时候不需要检查。例如数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException),类转换异常(ClassCastException)等。
Java中将派生于Error或RuntimeException的异常称为unchecked异常。
-
Checked异常
编译器强制checked异常必须try…catch处理或用throws声明继续抛给上层调用方法。
两者的区别:Runtime异常可以处理也可以不处理,编译器不会强制用try…catch或用throws声明,而Checked异常则需要。Java异常层次与异常分类
资料参考:Checked异常与Runtime异常
详解Java中的checked异常与unchecked异常