创建一个专门处理异常的类,然后指定处理异常的包,可以对某些特定的异常进行具体的处理。
/**
* 统一异常处理类
*/
//@ControllerAdvice(basePackages = "com.wn.gulimall.product.controller")//指定处理异常的包
@RestControllerAdvice(basePackages = "com.wn.gulimall.product.controller")//指定处理异常的包
public class ExceptionControllerAdvice {
/**
* 校验参数异常
* value:指定异常类型
* @param e
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R hannleValidException(MethodArgumentNotValidException e){
Map<String,String> map = new HashMap<>();
BindingResult result = e.getBindingResult();
result.getFieldErrors().forEach((item)->{
String code = item.getCode();
String message = item.getDefaultMessage();
map.put(code,message);
});
return R.error(400,"参数校验异常").put("data",map);
}
/**
* 处理其他异常
* @param e
* @return
*/
@ExceptionHandler(value = Throwable.class)
public R handleException(Exception e){
return R.error(500,"未知异常");
}
}