1. 程式人生 > >第五十九條 避免不必要地使用受檢的異常

第五十九條 避免不必要地使用受檢的異常


受檢的異常是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 {
             //處理異常...
        }

程式碼重要的是結構合理清晰,這樣便於擴充套件。清晰的結構就是進行判斷分流,按照邏輯,一層層分下去,每個支桿都有對應的邏輯處理,這樣,清晰簡潔,以擴充套件。