目录结构
代码
package com.ichenshengjie.product.exception;import com.ichenshengjie.common.utils.R;import lombok.extern.slf4j.Slf4j;import org.springframework.validation.BindingResult;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.HashMap;/** * 集中处理所有异常 */@Slf4j@RestControllerAdvice(basePackages = "com.ichenshengjie.product.controller")public class ShanExceptionControllerAdvice { /** * 数据校验异常 * 注解中的value参数代表要拦截的异常类是什么, 可以通过 * log.error("数据校验发生异常{},异常类型:{}", e.getMessage(), e.getClass()); * 将其打印出来 * @param e * @return */ @ExceptionHandler(value = MethodArgumentNotValidException.class) public R handleValidException(MethodArgumentNotValidException e) { HashMap<String, String> map = new HashMap<>(); log.error("数据校验发生异常{},异常类型:{}", e.getMessage(), e.getClass()); BindingResult result = e.getBindingResult(); result.getFieldErrors().forEach((fieldError) -> { String message = fieldError.getDefaultMessage(); String field = fieldError.getField(); map.put(field, message); }); return R.error(400, "提交的数据不合法").put("data", map); } /** * 所有异常 * @return */ @ExceptionHandler(value = Throwable.class) public R handleException(){ return R.error(); }}