AOP思想:通过@ControllerAdvice指定拦截哪个Controller,然后通过@ExceptionHandler指定要拦截的异常类型,在方法里面做拦截之后的处理。
@RestControllerAdvice = @ResponseBody + @ControllerAdvice = @ResponseBody + @Component
@Slf4j
// 指定要拦截的Controller
@RestControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
// 指定要拦截的异常 下面为 当接口出现参数校验异常时会被拦截并做错误记录返回给前端
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R handleValidException(MethodArgumentNotValidException e) {
log.error("数据校验出现异常:{},异常类型:{}", e.getMessage(), e.getClass());
// BindingResult封装了前面Bean的校验结果
BindingResult bindingResult = e.getBindingResult();
HashMap