第五十九條 避免不必要地使用受檢的異常
受檢的異常是java程式的一個很好的特性,使用它可以大大提高程式碼的可靠性,但如果大量使用異常,則會給程式碼的結構帶來不方便,如果聲明瞭大量的異常,都需要在丟擲異常的地方新增相對應的處理程式碼,這會給開發者帶來很大的負擔。異常這個東西,不能過分依賴。就像藥一樣,藥能治病,但是醫藥三分毒。健康的一個人,可以通過穿衣服保暖,就決不要去吃藥維持體溫。我們使用異常時,需要滿足以下條件,
一、正確的使用了api,但還不能阻止異常的發生;天氣很冷,你已經穿了厚厚的衣服,但還是感冒了,這時候就吃藥吧,沒辦法。 二、一旦產生異常,我們馬上可以採取相對應的措施。
就像前幾條的知識,
try { int i = 0; while (true){ range[i++].climb(); } }catch (ArrayIndexOutOfBoundsException e){
} 這個就屬於不必要的異常,我們就通過for迴圈即可解決問題;另外一種,書中的例子
try { obj.action(args); } catch(TheCheckedException e) { //處理異常... }
意思是不管有沒有這個許可權,都去掉用action(args),如果沒許可權,就通過受檢異常來保護,這樣寫業務邏輯不會出錯,但不符合程式碼規範,所以可以提供一個方法,是否有許可權,如果有,執行action(args),如果沒有,執行異常處理,這樣條理清晰
if(obj.actionPermitted(args)) { obj.action(args); } else { //處理異常... }
程式碼重要的是結構合理清晰,這樣便於擴充套件。清晰的結構就是進行判斷分流,按照邏輯,一層層分下去,每個支桿都有對應的邏輯處理,這樣,清晰簡潔,以擴充套件。