目錄
- 統一異常處理
- 一. 概念
- 二. 全局異常處理
- 三. 處理特定異常
統一異常處理
一. 概念
其實統一異常是運用了AOP(對某一類事情的集中處理)的思維,簡單概括就是在我們進行前后端數據交互的時候,拋出的任何的異常都能夠自動捕獲然后拋出,不用程序員在敲代碼時格外關注try catch語句。
其實統一異常處理非常簡單,在實現時要加入類注解@ControllerAdvice(這是一個表示控制通知的注解,在接下來的統一異常處理也要運用到),并且有一點與統一數據返回不同的是,統一異常處理需要加上類注解@ResponseBody來確認返回的數據類型,然后在類中要進行捕獲異常的方法上加上注解@ExceptionHandle即可。
二. 全局異常處理
處理全局異常代碼如下:
import com.example.demo.model.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvice
@ResponseBodypublic class ErrorAdvice {/*** 全局異常處理*/@ExceptionHandlerpublic Object handler(Exception e) {return Result.fail(e.getMessage());}}
這樣程序拋出異常的時候,就會被該異常處理方法所捕獲,并且返回統一異常處理的結果(JSON格式)!
三. 處理特定異常
處理特定異常代碼如下:
import com.example.demo.model.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@ResponseBody
@ControllerAdvicepublic class ErrorAdvice {@ExceptionHandlerpublic Object handler(Exception e) {return Result.fail(e.getMessage());}@ExceptionHandlerpublic Object handler(NullPointerException e) {return Result.fail("發?NullPointerException:"+e.getMessage());}@ExceptionHandlerpublic Object handler(ArithmeticException e) {return Result.fail("發?ArithmeticException:"+e.getMessage());}}
當有多個異常通知時,匹配順序為當前類及其?類向上依次匹配
進行統一異常處理的目的就是在異常發生時,盡可能地減少破壞,妥善處理,而不去影響其他部分程序的運行