springboot統一異常處理
阿新 • • 發佈:2021-01-29
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);
}
後序完善。。。。。