1. 簡介
異常類繼承圖
Java的錯誤類(
Error
)和異常類(Exception
)都是Throwable
的子類,基本由這兩大類展開的爱咬。
Error
Error
這個類通常指的是系統(tǒng)級的錯誤舍败,如OutOfMemoryError
(內(nèi)存溢出)、StackOverflowError
(棧溢出)這些錯誤,當出現(xiàn)這些錯誤時基本是系統(tǒng)問題脂凶,基本不能通過捕獲去恢復浪册,所以不要求捕獲或聲明扫腺。此時可以由它拋出異常然后記錄下來,事后分析村象。
Exception
Exception
其實也分為兩類異常
不受檢查異常(RuntimeException)
不受檢查異常即是RuntimeException
和RuntimeException
的子類笆环,如NullPointerException
(空指針異常)、ArrayIndexOutOfBoundsException
(數(shù)組下標越界異常)厚者、IllegalArgumentException
(非法參數(shù)異常)躁劣。這類異常不要求try catch
捕獲或throws
聲明拋出,因為出現(xiàn)此類異常通常是由于代碼問題库菲,如果任由程序運行下去可能會出現(xiàn)意想不到后果账忘,所以不應該捕獲處理試圖恢復。
受檢查異常
受檢查異常即除了RuntimeException
外Exception
類和Exception
下的子類熙宇,如InterruptedException
鳖擒、IOException
。出現(xiàn)此類異常必須在編譯前捕獲或聲明拋出烫止,否則編譯不通過蒋荚。此類異常通常是可以捕獲并有效處理所以不能忽略。
2. 注意
- 只針對異常的情況使用異常機制馆蠕,不應該將他們用于正常的控制流
- 對可恢復的情況使用受檢查異常圆裕,對編程錯誤使用運行時異常
- 避免不必要地使用受檢查異常
- 優(yōu)先使用標準的異常(JDK中的異常)
- 不要忽略異常