核心原則
- 使用非檢查異常:給調用者選擇權,將第三方檢查異常包裝為非檢查異常拋出。
- 分層錯誤處理:在每層頂部安裝統一處理器,負責日誌、監控通知、轉換,業務層專注業務異常。
- 異常層次建模:避免為每種情況創建新異常類,利用屬性描述上下文,判斷是否為現有異常的變體。
- 用戶友好提示:向最終用戶展示有意義的錯誤信息,而非堆棧跟蹤。
實現策略
- 基於 Aspect(切面) 在各層(Web、EJB、EIS)織入異常處理邏輯。
- 引入 Application-wide Session 跨層傳遞上下文(用戶、請求ID、事務狀態)。
- 遵循「非檢查異常教條」,逐漸成為 Java 社區共識。
架構圖示
[Web Layer] --Aspect--> [Business Layer] --Aspect--> [EIS Layer]
| | |
Unified Handler Unified Handler Unified Handler
(Log/Notify/Transform) (Log/Notify/Transform) (Log/Notify/Transform)
適用場景
適合大型分布式 J2EE 系統,需統一錯誤碼、審計日誌、監控告警。中小項目可簡化為統一異常基類 + 全局異常映射器。