業務邏輯異常和執行異常處理集錦


【業務邏輯異常和執行異常】
對於異常我們只分業務邏輯異常(不符合業務規則的異常)和執行異常(系統自己的異常,比如什么conn出錯,某某dll缺少依賴)
業務規則異常自己繼承實現一個mylogic異常類就行,無論你是什么dal,你對業務部分異常都拋這個就成
執行異常通常不用管直接寫入log4net中,以便維護人員排查錯誤

 

異常你得分開來看,
一種是可預見異常,簡單的例子就是除0啊強轉啊導致的,這里異常不但不應該拋出反而應該在邏輯層就被排除掉。
另一種是不可預見的異常,比如數據庫連接在執行時突然斷了,這類異常完全和邏輯無關,所以放邏輯層處理顯然不合適,必須記錄日志,可能的話要通知相關人員。

 

☆☆☆☆☆
異常可以分為系統異常和業務異常,業務異常必須被轉化為業務執行的結果
DataAccess層不得向上層隱藏任何異常
要明確區分業務執行的結果和系統異常。比如驗證用戶的合法性,如果對應的用戶ID不存在,不應該拋出異常,而是返回(或通過out參數)一個表示驗證結果的枚舉值,這屬於業務執行的結果。但是,如果在從數據庫中提取用戶信息時,數據庫連接突然斷開,則應該拋出系統異常

BL層應根據業務的需要捕獲某些系統異常,並將其轉化為業務執行的結果
UI層除了從調用BL層的API獲取的返回值來查看業務的執行結果外,還需要截獲所有的系統異常,並將其解釋為友好的錯誤信息呈現給用戶
一般使用log4net實現日志記錄和自定義異常處理

 

【結論和規范】
只在業務層記錄錯誤,數據層只是拋出

 

參考資料

 

.NET中異常處理的最佳實踐(譯)

 

 

關於.NET異常處理的思考

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM