贝利信息

Java接口参数校验失败异常如何处理_Java校验异常最佳实践

日期:2026-01-07 00:00 / 作者:P粉602998670
接口参数校验应统一拦截MethodArgumentNotValidException和ConstraintViolationException,结构化返回400响应;使用分组校验(Create/Update)按场景启用规则;封装@ValidMobile等自定义注解提升语义;响应体中文提示、日志记录脱敏上下文,确保准、快、可维护。

接口参数校验失败时,不建议直接抛出原始的 ConstraintViolationException 或让框架默认返回 500 错误页。应统一捕获、结构化响应,并兼顾可读性与调试效率。

统一拦截校验异常

@ControllerAdvice + @ExceptionHandler 拦截 MethodArgumentNotValidException(用于 @Valid 注解在 DTO 上)和 ConstraintViolationException(用于 @Valid 注解在方法参数上)。

使用分组校验控制场景

避免一个 DTO 承担所有接口的校验逻辑。通过校验分组(interface 标记)按业务场景启用不同规则。

自定义校验注解提升语义

对业务强相关的规则(如“手机号必须是 11 位且以 1 开头”),不要堆砌多个基础注解,而是封装为可复用的自定义注解。

日志记录与前端友好提示

异常响应要对前端友好,但后端日志需保留完整上下文,方便排查。

基本上就这些。校验不是越严越好,而是要准、要快、要可维护。把规则收口、分层、可配置,比堆 @NotNull 更重要。