第7章 異常、斷言和日誌
-
異常結構分類
所有的異常都是由 Throwable 繼承而來,但在下一層立即分解爲兩個分支:Error 和 Exception。Exception這個層次結構又分解爲兩個分支: 一個分支派生於RuntimeException; 另一個分支包含其他異常。- 派生於 RuntimeException 的異常包含下面幾種情況(只是簡單列舉,可能包含的不完全)出現這個異常一般都是自己的代碼有問題
- 錯誤的類型轉換。
- 數組訪問越界。
- 訪問 null 指針。
- 其他異常
- 試圖在文件尾部後面讀取數據
- 試圖打開一個不存在的文件
- 試圖根據給定的字符串查找Class對象,而這個字符串表示的類並不存在
- 錯誤的類型轉換。
- 派生於 RuntimeException 的異常包含下面幾種情況(只是簡單列舉,可能包含的不完全)出現這個異常一般都是自己的代碼有問題
-
拋出異常的四種情況
- 調用一個拋出受查異常的方法。
- 運行中發現錯誤,利用throw語句拋出一個受查異常。(程序自主,代碼可控)
- 程序出現錯誤,拋出非受查異常。(程序不自主,代碼不可控)
- Java虛擬機出現內部錯誤
-
捕獲異常。利用try/catch來捕獲異常。
- 如果try塊中出現異常,程序將會跳過剩下的代碼。
- 程序將執行catch塊中的代碼。
- 如果try塊中拋出了catch中沒有聲明的異常,程序會立即退出。
-
處理異常的幾個技巧
-
異常處理不能代替簡單的測試
-
不要過分的細化異常
-
利用異常層次結構
-
不要壓制異常
-
在監測錯誤時,嚴格要比放任好
-
不要害怕傳遞異常
-
-
斷言用處不是很多,現在用IDE自帶的斷點可能會好一點
-
日誌管理可以使用單獨的插件或者工具,最好項目中的日誌都是統一的
因爲目前對於異常的處理還是比較少,感覺只要瞭解異常的處理方法和實際碼代碼中異常的正常流程即可。
就這樣吧,結束。