異常處理的 15 個處理原則
1、不用使用異常來管理業務邏輯,應該使用條件語句。如果一個控制邏輯可通過 if-else 語句來簡單完成的,那就不用使用異常,因為異常會降低程式碼的可讀性和效能,例如一些 null 的判斷邏輯、除0的控制等等;
2、異常的名字必須清晰而且有具體的意思,表示異常發生的問題,例如 FileNotFoundException 就很清晰直觀
3、當方法判斷出錯該返回時應該丟擲異常,而不是返回一些錯誤值,因為錯誤值難以理解而且不夠直觀,例如丟擲 FileNotFoundException 異常,而不是返回 -1 或者 -2 之類的錯誤值。
4、應該捕獲指定的異常,而不是 catch(Exception e) 了事,這對效能、程式碼的可讀性以及諸多方面都有好處
5、Null 的判斷邏輯並不是一成不變的,當方法允許返回 null 的時候使用 if-else 控制邏輯,否則就丟擲 NullPointerException
6、儘量不要二次丟擲異常,如果非得這麼做的話,丟擲同一個異常示例,而不是重新構建一個異常物件,這對效能是有幫助的,而且外層呼叫者可獲取真實的異常資訊
7、定義你自己的異常類層次,例如 UserException 和 SystemException 分別代表使用者級別的異常資訊和系統級別的異常資訊,而其他的異常在這兩個基類上進行擴充套件
8、明確的使用不同的異常型別:
Fatal: System crash states. Error: Lack of requirement. Warn: Not an error but error probability. Info: Info for user. Debug: Info for developer.
9、不要僅僅捕獲異常而不做任何處理,不便於將來維護
10、不要多次重複記錄同一個異常,這可以讓我們清晰的瞭解異常發生的位置
11、請使用 finally 來釋放一些開啟的資源,例如開啟的檔案、資料庫連線等等
12、大部分情況下不建議在迴圈中進行異常處理,應該在迴圈外對異常進行捕獲處理
13、異常的粒度很重要,應該為一個基本操作定義一個 try-catch 塊,不要為了簡便,將幾百行程式碼放到一個 try-catch 塊中
14、為你的異常生成足夠的文件說明,至少是 JavaDoc
15、為每個異常訊息定義一個數值,這對好的文件來說是非常重要的。