Java存在三種可抛出結構(throwable):受檢異常(checked exception)、運作時異常(runtime exception)和錯誤(error)。
使用原則是:
1、如果期望調用者能夠恢複,則應該使用受檢異常。抛出受檢異常,可以強迫調用者在一個catch子句中處理該異常,或者繼續向外傳播。
2、運作時異常是指難以恢複或者不可恢複的程式錯誤。大多數運作時異常都是表明前提違例:precondition violation指API的調用方沒有遵循調用約定
3、錯誤(error)被JVM保留用于訓示資源不足、限制失敗或者其他程式無法繼續執行的情況。最好不要實作新的Error子類,所有抛出的未受檢異常都應該是RuntimeException的子類。