有些時候我明明知道這樣做絕對不會引起exception,還要去catch嗎?
又有些時候,被觸發的錯誤是致命的,而且不是因為使用者操作而引起的。這樣,就算catch了,也是die。這樣來說,catch這個exception又有什麼意義呢?
然而我總是看到很多說法說一定不要只throw就不管了,不去catch。
那到底該怎麼做呢?
有些時候我明明知道這樣做絕對不會引起exception,還要去catch嗎?
又有些時候,被觸發的錯誤是致命的,而且不是因為使用者操作而引起的。這樣,就算catch了,也是die。這樣來說,catch這個exception又有什麼意義呢?
然而我總是看到很多說法說一定不要只throw就不管了,不去catch。
那到底該怎麼做呢?
個人覺得錯誤處理方面,需要把握一個度,而對這個度的把握卻又十分困難。
我的理解是:
首先,基本、必要的exception一定要做。
其次是並不需要盡可能的catch所有的exception,否則
錯誤處理程式碼冗長
執行效率問題
有些exception catch了,但沒有更好的辦法處理;例如是程式碼的bug,反而應該盡可能的把程式碼的bug暴露出來,然後儘早解決。
最後總結一下,異常處理需要掌握一個度,我認為的這個度是:
做基本和必要的異常處理
不刻意為了追求完美而去做所有的異常處理,有些問題應該儘早暴露和解決
我的經驗:
Catch已知能夠處理的異常,error logging其它異常讓程式設計師手動去處理
異常處理分層次,在實作自己的模組時,將依賴的第三方模組的異常處理包含在自己的模組內
Java異常處理的10個最佳實踐
然而總有人喜歡像折騰輪子一樣自己去總結一套,爬坑出來才發現別人造的輪子是那麼的不錯(笑)。
計算是catch了也不一定就是die了,捕獲異常主要是為了處理異常而不是die掉,比如在發送郵件的時候因為網絡原因而發送失敗的時候,這個時候就拋出異常進行處理將失敗的人物放進隊列中等待再次處理。
異常是為了程序更健壯