先看基本的异常结构层次图:
首先用网络上的说法总结一下:Error 和Runtime Exception 都属于 unchecked exception。除了RuntimeException之外的,都是 checked exception。
关于checked Exception 和 unchecked Exception的解析,网上五花八门,但是本人比较笨,看上去都很难理解,所以我想要的就是最通俗易懂地用自己的话来总结出来。
先从字面上简单理解,checked exception 直译就是 “已经被确认的异常”,unchecked exception 直译就是 “无法被确认的异常 ”。
在编码中, checked exception 一定要加 try … catch … 或者 throw 抛出具体异常 或者 throws声明可能抛出的异常。例如:ClassNotFoundException 找不到class,IllegalAccessException非法连接,SQLException 数据库操作异常,TimeoutException超时异常。这些异常,不做处理,编译都无法通过。
其实我们都知道它不一定会出现,但是为什么它们这种异常在我们写代码的时候就会被识别出来要捕获?因为“很有可能发生”,就例如从二楼往下跳,很有可能会摔断腿,但是不一定摔断腿,所以这个时候医生在旁边随时准备捕获和抢救,就能保证应用程序的稳定运行。