1. 程式人生 > 其它 >springboot統一異常處理

springboot統一異常處理

技術標籤:筆記ideajava

springboot統一異常處理

1、首先引入依賴(若不用資料校驗則忽略這一步)

<!--資料校驗依賴包-->
<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>2.0.1.Final</version>
</dependency>

2、定義一個統一異常處理類

public class TestExceptionControllerAdvice
(){}

3、宣告這個類是異常處理類
第一種就是在類上標註註解

@ControllerAdvice(basePackages = "xxx.xxx.xxx.controller") // 該類是一個異常處理類
@ResponseBody // 宣告該類的所有方法都返回json格式的字串
public class TestExceptionControllerAdvice (){}

第二種就是在類上標註註解(實際上就是第一種註解的升級版)

@RestControllerAdvice(basePackages = "xxx.xxx.xxx.controller"
) public class TestExceptionControllerAdvice (){}

我們可以看@RestControllerAdvice註解的原始碼
在這裡插入圖片描述
實際上都是包含了第一種方法的兩個註解
4、在該類上寫上異常處理的方法

 @ExceptionHandler(value = Exception.class) //宣告該方法是哪個異常發生時呼叫的方法
 public R handlerValidException(Exception e){
      log.error("出現異常啦!->{},型------>{}", e.getMessage()
, e.getClass()); BindingResult bindingResult = e.getBindingResult(); List<FieldError> fieldErrors = bindingResult.getFieldErrors(); Map<String, String> map = new HashMap<>(); fieldErrors.forEach((item) -> { map.put(item.getField(), item.getDefaultMessage()); }); return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(), BizCodeEnume.VALID_EXCEPTION.getMsg()).put("data", map); }

後序完善。。。。。