springboot中@Valid注解抛出异常的处理

更新时间:2023-05-09 17:55:02 阅读: 评论:0

springboot中@Valid注解抛出异常的处理@Valid实体类中注解的异常抛出处理
实体类中的写法
/**
* ⼿机号
*/
@NotNull(message = "⼿机号不能为空")
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "⼿机号格式有误")
String phone;
异常处理的类
@ControllerAdvice
@ResponBody
public class GlobleExceptionHandler {
/**
* 要拦截的异常Exception
*/
@ExceptionHandler(value = {BindException.class, ValidationException.class, MethodArgumentNotValidException.class})    public ResponEntity<Result<?>> handleValidatedException(Exception e) {
Result<?> resp = null;
if (e instanceof MethodArgumentNotValidException) {
// BeanValidation exception
MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
resp = (500, ex.getBindingResult().getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "))
);
} el if (e instanceof ConstraintViolationException) {
// BeanValidation GET simple param
ConstraintViolationException ex = (ConstraintViolationException) e;
resp = (500,
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "))
);
} el if (e instanceof BindException) {
// BeanValidation GET object param
BindException ex = (BindException) e;
resp = (500,
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "))
);
}
return new ResponEntity<>(resp,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
引⼊的import
api.vo.Result;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponEntity;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponBody;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
l.bind.ValidationException;
import java.util.stream.Collectors;
因为异常有可能⾛到
MethodArgumentNotValidException ConstraintViolationException
BindException
这三个其中的任意⼀个
最后返回前端的值是
INTERNAL_SERVER_ERROR(500, “Internal Server Error”),

本文发布于:2023-05-09 17:55:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/875337.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:机号   注解   处理   抛出   格式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图