中斷:丟擲一個異常類的例項而終止現有程式的執行;
恢復:不是丟擲一個異常類的例項,而是呼叫一個用於解決問題的方法或就地解決問題。
在Java中,對那些要呼叫方法的客戶程式設計師,我們要通知他們可能從自己的方法裡“擲”出違例。這是一種有禮貌的做法,只有它才能使客戶程式設計師準確地知道要編寫什麼程式碼來捕獲所有潛在的違例。
catch(Exception e) { System.out.println("caught an exception"); }
這段程式碼能捕獲任何違例,所以在實際使用時最好將其置於控制器列表的末尾,防止跟隨在後面的任何特殊違例控制器失效。對於程式設計師常用的所有違例類來說,由於Exception 類是它們的基礎,所以我們不會獲得關於違例太多的資訊,但可呼叫來自它的基礎類Throwable 的方法:
String getMessage()
獲得詳細的訊息。
String toString()
返回對Throwable 的一段簡要說明,其中包括詳細的訊息(如果有的話)。
void printStackTrace() void printStackTrace(PrintStream)
列印出Throwable 和Throwable 的呼叫堆疊路徑。呼叫堆疊顯示出將我們帶到違例發生地點的方法呼叫的順序。
第一個版本會列印出標準錯誤,第二個則列印出我們的選擇流程。若在Windows 下工作,就不能重定向標準錯誤。因此,我們一般願意使用第二個版本,並將結果送給System.out;這樣一來,輸出就可重定向到我們希望的任何路徑。