很久沒有活動過了,今日偶然有一小心得,便拿出與大家分享。
記得很久以前,以以C#為主要工作內容時,曾經和同事們以及在cnBlogs中不下數次討論關於如何用好異常處理的問題,當時得到的結論是:異常處理在程式正常運行時並不會在效率上有太大的影響,僅僅在程式拋出並捕獲了異常時效率上才會顯得有那麼一點點的影響。
今天我們不談效率,僅就該如何提高程式的健壯性做一點討論。
依照以前的經驗,異常處理應該遵守如下規則:
1.在UI層捕獲異常,並忽略可以忽略的異常,不可忽略的異常應該做出相應的處理,並將它程式給使用者
2.在BL層盡量不處理異常,如果非要處理,那麼請保證該異常不會影響到系統正常的運行
3.能夠使用自訂異常的部分,請使用自訂異常,否則請一定要catch(Exception)
如果遵照以上三個規則,並且很好的對產生的異常進行處理,那麼我們的程式便會很大程度上提高其健壯性。
如果你所使用的架構中為了提高程式的健壯性,使用的不是try Exception的方式,而是用自訂Error的方式進行處理,那麼一旦有任何的異常拋出,並且你沒有及時的將這個異常傳遞給你自訂的Error,那麼,恭喜你,你以後就不要擔心沒事可做了!因為一切都是你定義的一個Error類,並且在進行商務邏輯處理的時候,如果不滿足相應的商務邏輯,你便把相應的資訊放到該Error中,然後再要求其他層調用該方法時捕獲該Error,並對其進行處理……試想,如果一個新手來到了你的項目組,對你的這一套處理邏輯不是很清楚的話,就是不擷取你的Error,也不對其進行處理!!OMG……那就等著生產機上出現一些莫名其妙並且無法找到任何的蛛絲馬跡的BUG吧……
假如您是一個架構的設計者,請一定仔細考慮如何能使以後使用該架構的人能夠捕獲您架構底層產生的錯誤,也要考慮到以後使用您的架構設計的程式能夠正常運行,能夠平穩的運行每一天。
假如您是一個使用了“錯誤”而非“異常”的架構使用者,如果您有能力改造您的架構,那麼這是最好的事情,如果您無力改造您所使用的架構,那麼即便該架構設計的再糟糕,也請努力使您寫出的程式健壯一些,不要讓您寫的程式太脆弱……