基於spring 的統一異常處理

將業務執行過程當中會產生的各類異常,對其進行統一處理是全部web項目的通用需求,spring 做爲最流行的web框架,天然是提供瞭解決方案。web

spring 的統一異常處理

在Spring 3.2中,新增了@ControllerAdvice、@RestControllerAdvice 註解來加強咱們 controller 層的。spring

在標註了 @ControllerAdvice、@RestControllerAdvice 註解的類中,配合使用如下註解能夠實現不一樣的功能框架

  • @ExceptionHandler : 全局異常處理
  • @InitBinder : 全局數據綁定
  • @ModelAttribute : 全局數據預處理

對於全局異常處理,具體來講就是,經過建立 @ControllerAdvice 類,並自定義一個 @ExceptionHandler 方法,來統一處理。.net

實例

這裏提供一種常見的設計,供你們參考。設計

主要分爲如下幾個部分3d

  • 自定義全局狀態碼
  • 自定義異常類
  • 自定義業務結果類
  • 自定義統一異常處理類
  • 使用自定義的異常

自定義全局狀態碼

每個業務狀態都對於一個狀態碼 cdn

自定義異常類

每一種異常都對於一種ApplicationEnum blog

自定義業務結果類

自定義業務結果類,來統一全部 controller 層的返回值get

爲了方便使用,再建立一個 SuccessResult 和一個 FailResultit

自定義異常處理類

若是一個異常能匹配多個 @ExceptionHandler 時,選擇匹配深度最小的Exception(即最匹配的Exception)

參考文章

使用自定義的異常

相關文章
相關標籤/搜索