Spring Boot 使用 @ControllerAdvice 注解处理全局异常
Spring Boot Java About 1,308 words指定异常
可根据异常类型返回对应信息。如使用了@Valid
注解进行请求字段的验证,可判断异常是否是MethodArgumentNotValidException
来返回对应的信息。
也可自定义异常,只需根据相应类型判断返回对应错误信息即可。
代码示例
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleException(Exception e) {
log.error("GlobalExceptionHandler#{}", e.getMessage());
Result result = new Result();
result.setCode(-1);
if (e instanceof MethodArgumentNotValidException) {
BindingResult bindingResult = ((MethodArgumentNotValidException) e).getBindingResult();
String defaultMessage = "参数校验未通过";
if (bindingResult.hasErrors()) {
defaultMessage = ":" + bindingResult.getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining(","));
}
result.setMsg(defaultMessage);
} else if (e instanceof MissingServletRequestParameterException) {
result.setMsg("请求参数不完整");
}else if (e instanceof TypeMismatchException) {
result.setMsg("请求参数类型不匹配");
} else if (e instanceof HttpMessageNotReadableException) {
result.setMsg("缺少请求体参数");
} else {
result.setMsg("请求失败");
}
return result;
}
}
Views: 2,664 · Posted: 2020-04-02
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...