一、什么是Java異常?
Java異常就是代碼編譯和運行中出現(xiàn)的一些特殊情況,通過異常我們可以查找出異常的代碼進(jìn)行修復(fù)。
二、Java的異常層次結(jié)構(gòu)圖:

Java異常分為Error和Exception兩大類,都繼承自Throwable類,其中Error是編譯和系統(tǒng)錯誤,不允許捕獲;Exception表示標(biāo)準(zhǔn)java庫激發(fā)的異常;Exception又分IOException和RuntimeException兩類。
三、檢查異常和非檢查異常
檢查異常(checked exceptions)和非檢查的異常(unchecked exceptions)。
其中根據(jù)Exception異常進(jìn)行劃分,可分為運行時異常和非運行時異常。
檢查異常:
what:編譯器要求強(qiáng)制去檢查的異常,必須由人工去處理
how:添加try catch/ throws 異常
where:除了Error和RuntimeException及其子類,都屬于檢查異常
比如:IOException,文件操作的時候編譯器強(qiáng)制進(jìn)行異常處理
非檢查異常:
what:編譯器不要求強(qiáng)制處置的異常,及時有可能運行時拋異常,但仍可以通過編譯
why:因為有些異常在編譯期無法捕捉到,比如0做被除數(shù)、或數(shù)組越界等
where:運行時異常RuntimeException及其子類,以及Error類
how:1、捕獲 2、不處理 3、拋出
運行時異常:
RuntimeException及其子類都屬于運行時異常,比如NullPointException、IndexOutOfBoundsException都屬于運行時異常
非運行時異常:
除RuntimeException及其子類和Error類外,其他都屬于非運行時異常,在編碼及編譯階段就應(yīng)該處理的異常,比如IOException、EOFException等