在使用springboot 中的注解参数校验时遇到捕获不了异常 前台报400 Bad request错误的情况
原来是捕获的异常不对
有下面三种异常 注意都要捕获
ConstraintViolationException //(方法参数校验异常)如实体类中的@Size注解配置和数据库中该字段的长度不统一等问题
MethodArgumentNotValidException //(Bean 校验异常)
BindException //(参数绑定异常)
所以方法这样写:
* 参数验证异常处理
* @param ex
@ResponseBody
@ExceptionHandler({BindException.class, MethodArgumentNotValidException.class, ConstraintViolationException.class})
public ResultData argumentValidationHandler(Exception ex) {
String errorMsg = "参数验证错误";
BindingResult bindingResult = null;
if (ex instanceof BindException) {
BindException bindException = (BindException) ex;
bindingResult = bindException.getBindingResult();
if (ex instanceof MethodArgumentNotValidException) {
MethodArgumentNotValidException methodArgumentNotValidException = (MethodArgumentNotValidException) ex;
bindingResult = methodArgumentNotValidException.getBindingResult();
if (ex instanceof ConstraintViolationException) {
ConstraintViolationException constraintViolationException = (ConstraintViolationException) ex;
errorMsg = constraintViolationException.getMessage();
if (bindingResult != null) {
for (FieldError filedError : bindingResult.getFieldErrors()) {
errorMsg = filedError.getDefaultMessage();
// errorFiled = filedError.getField();