Java的基本理念是「結構不佳的代碼不能運行」。編程
1.概念
- 用強制規定的形式來消除錯誤處理過中爲所欲爲的因素.
- 使用異常所帶來的一個至關明顯的好處是,它每每可以下降錯誤處理代碼的複雜度.
2.基本異常
- 異常情形是指阻止當前方法或做用於繼續執行的問題.
- 標準異常都有兩個構造器:一個是默認構造器,另外一個是接受字符串做爲參數,以便能把相關信息放入異常對象的構造器.
3.捕獲異常
- 監控區域:一段可能產生異常的代碼,而且後面跟着處理這些異常的代碼.
- try塊:跟在關鍵字try以後的普通程序塊.
- 異常處理程序:拋出的異常必須在某處獲得處理,這個"地點"就是異常處理程序,並且針對每一個要捕獲的一場,得準備相應的處理程序.
- 異常處理程序緊跟在try塊以後,以關鍵字catch表示.
- 異常處理模型:終止模型,恢復模型(不實用).
4.建立自定義異常
- 要自定義異常類,必須從已有的異常類繼承,最好的選擇是相近的異常類繼承.
5.異常說明
- 異常說明使用了附加的關鍵字throws,後面接一個全部潛在異常類型的列表.
6.捕獲全部異常
- Exception是與編程有關的全部異常類的基類.
7.Java標準異常
- Throwable這個Jaba類被用來表示任何能夠做爲一場被拋出的類.
- Throwable對象可分爲兩種類型(指從Throwable繼承而獲得的類型):Error(表示編譯時和系統錯誤),Exception(能夠被拋出的基本類型).
- 特例:RuntimeException(或任何從它繼承來的異常),編譯器不須要一場說明,其輸出報告給了System.err.
8.使用finally清理
- 不管異常是否被拋出,finally子句總能被執行.
9.異常的限制
- 當覆蓋方法的時候,只能拋出在基類方法的異常說明裏列出的一場.
10.構造器
- 處理具備能夠失敗的構造器,且須要清理的對象:對於每個構造器,都必須包含在其本身的try-finally語句塊中,而且每個對象構造器必須都跟隨一個try-finally語句塊以確保清理.
11.異常匹配
- 拋出異常的時候,異常處理系統會按照代碼的書寫順序找出"最近"的處理程序.
- 找到匹配的處理程序以後,它就認爲異常將獲得處理,而後就再也不繼續查找.
- 查找的時候並不要求拋出的異常同處理程序所聲明的異常徹底匹配,派生類的對象也能夠匹配其基類的處理程序.
12.其餘可選方式
- 異常處理的一個重要原則:只有在知道如何處理的狀況下才捕獲異常.
- 異常處理的一個重要目標:把錯誤處理的代碼同錯誤發生的地點相分離.
13.異常使用指南
- 應該在下列狀況下使用異常:
1.在恰當的級別處理問題.
2.解決問題而且從新調用產生異常的方法.
3.進行少量修補,而後繞過異常發生的地方繼續執行.
4.在別的數據進行計算,以代替方法預計會返回的值.
5.把當前運行環境下能作的事情儘可能作完,而後把相同的異常重拋到更高層.
6.把當前運行環境下能作的事情儘可能作完,而後把不一樣的異常重拋到更高層.
7.終止程序.
8.進行簡化.
9.讓類庫和程序更安全.
END安全