Error和Exception的區(qū)別
Error -- 程序無(wú)法處理的系統(tǒng)錯(cuò)誤,編譯器不做檢查
Exception -- 程序可以處理的異常,捕捉后能恢復(fù)
RuntimeException和非RuntimeException
RuntimeException -- 如何空指針異常等,是不可預(yù)知的,應(yīng)該在程序中避免
非RuntimeException -- 可預(yù)知的,編譯器校驗(yàn)的異常,如IOException
常用異常類(lèi)
Runtime
NullPointerException -- 空指針異常
ClassCastException -- 類(lèi)型強(qiáng)制轉(zhuǎn)換錯(cuò)誤
IllegalArgumentException -- 傳遞非法參數(shù)異常
IndexOutOfBoundsException -- 下標(biāo)越界異常
NumberFormatException -- 數(shù)字格式異常
非Runtime
ClassNotFoundException -- 找不到指定class的異常
IOException -- IO操作異常
Error
NoClassDefFoundError -- 找不到class定義的異常
StackOverflowError -- 爆棧
OOM -- 爆堆
Java異常處理消耗性能的地方:
1.try-catch 影響 JVM 的優(yōu)化
2.異常對(duì)象實(shí)例需要保存棧快照等信息,開(kāi)銷(xiāo)大