首页 > 解决方案 > ValidationException vs ConstraintViolationException 用于验证

问题描述

我想弄清楚我必须使用哪个异常(ConstraintViolationException或) ,。ValidationException@ControllerAdvice

我的控制器是

@RequestMapping(value="/myUrl",method = RequestMethod.POST)
    public String getMyData( @Valid @RequestBody MyObject myObject,BindingResult bindingResult ) {   

这是我的 ControllerAdvice 类,我不确定要使用哪个异常。

   @ControllerAdvice
    public class ValidationAdviceClass{
        @ExceptionHandler(ValidationException.class or ConstraintViolationException.class )
        public ResponseEntity handleValidtionErrors(ValidationException ex or ConstraintViolationException) {

       // mycode
}

搜索我发现有人说使用MethodArgumentNotValidException

我对使用哪种类型的异常感到困惑。

标签: spring-bootspring-restcontrollerspring-validator

解决方案


除非在验证过程中发生错误,否则不会自动抛出异常,例如(然后ValidationException会抛出 a)。

您中的任何验证错误RequestBody都将作为函数的参数传递给BindingResult您。然后由您决定是否要抛出异常。

我建议您阅读有关验证表单输入的 Spring 教程,以更好地了解如何实现您想要的。


推荐阅读