將業務執行過程當中會產生的各類異常,對其進行統一處理是全部web項目的通用需求,spring 做爲最流行的web框架,天然是提供瞭解決方案。web
在Spring 3.2中,新增了@ControllerAdvice、@RestControllerAdvice 註解來加強咱們 controller 層的。spring
在標註了 @ControllerAdvice、@RestControllerAdvice 註解的類中,配合使用如下註解能夠實現不一樣的功能框架
對於全局異常處理,具體來講就是,經過建立 @ControllerAdvice 類,並自定義一個 @ExceptionHandler 方法,來統一處理。.net
這裏提供一種常見的設計,供你們參考。設計
主要分爲如下幾個部分3d
每個業務狀態都對於一個狀態碼 cdn
每一種異常都對於一種ApplicationEnum blog
自定義業務結果類,來統一全部 controller 層的返回值get
爲了方便使用,再建立一個 SuccessResult 和一個 FailResultit
若是一個異常能匹配多個 @ExceptionHandler 時,選擇匹配深度最小的Exception(即最匹配的Exception)