Java包含了一個名為Throwable的類,它對可以作為違例“擲”出的所有東西進行了描述。Throwable對象有兩種常規類型(亦即“從Throwable繼承”)。其中,Error代表編譯期和系統錯誤,我們一般不必特意捕獲它們(除在特殊情況以外)。Exception是可以從任何標准Java庫的類方法中“擲”出的基本類型。此外,它們亦可從我們自己的方法以及運行期偶發事件中“擲”出。
為獲得違例的一個綜合概念,最好的方法是閱讀由http://java.sun.com提供的聯機Java文檔(當然,首先下載它們更好)。為了對各種違例有一個大概的印象,這個工作是相當有價值的。但大家不久就會發現,除名字外,一個違例和下一個違例之間並不存在任何特殊的地方。此外,Java提供的違例數量正在日益增多;從本質上說,把它們印到一本書裡是沒有意義的。大家從其他地方獲得的任何新庫可能也提供了它們自己的違例。我們最需要掌握的是基本概念,以及用這些違例能夠做什麼。
java.lang.Exception
這是程序能捕獲的基本違例。其他違例都是從它衍生出去的。這裡要注意的是違例的名字代表發生的問題,而且違例名通常都是精心挑選的,可以很清楚地說明到底發生了什麼事情。違例並不全是在java.lang中定義的;有些是為了提供對其他庫的支持,如util,net以及io等——我們可以從它們的完整類名中看出這一點,或者觀察它們從什麼繼承。例如,所有IO違例都是從java.io.IOException繼承的。