springboot中@Valid注解抛出异常的处理
@Valid实体类中注解的异常抛出处理实体类中的写法/*** 手机号*/@NotNull(message = "手机号不能为空")@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")String phone;异常处理的类@ControllerAdvice@ResponseBodypublic class Glo
·
@Valid实体类中注解的异常抛出处理(附:常用注解)
实体类中的写法
/**
* 手机号
*/
@NotNull(message = "手机号不能为空")
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
String phone;
异常处理的类
@ControllerAdvice
@ResponseBody
public class GlobleExceptionHandler {
/**
* 要拦截的异常Exception
*/
@ExceptionHandler(value = {BindException.class, ValidationException.class, MethodArgumentNotValidException.class})
public ResponseEntity<Result<?>> handleValidatedException(Exception e) {
Result<?> resp = null;
if (e instanceof MethodArgumentNotValidException) {
// BeanValidation exception
MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
resp = Result.error(500, ex.getBindingResult().getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "))
);
} else if (e instanceof ConstraintViolationException) {
// BeanValidation GET simple param
ConstraintViolationException ex = (ConstraintViolationException) e;
resp = Result.error(500,
ex.getConstraintViolations().stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "))
);
} else if (e instanceof BindException) {
// BeanValidation GET object param
BindException ex = (BindException) e;
resp = Result.error(500,
ex.getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "))
);
}
return new ResponseEntity<>(resp,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
引入的import
import com.goldshell.common.api.vo.Result;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
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.ResponseBody;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.xml.bind.ValidationException;
import java.util.stream.Collectors;
因为异常有可能走到
MethodArgumentNotValidException
ConstraintViolationException
BindException
这三个其中的任意一个
最后返回前端的值是
INTERNAL_SERVER_ERROR(500, “Internal Server Error”),
更多推荐
已为社区贡献1条内容
所有评论(0)