2016 - 2024

感恩一路有你

spring boot 全局异常 springboot接口参数注解怎么处理异常参数?

浏览量:2964 时间:2023-05-20 21:51:54 作者:采采

springboot接口参数注解怎么处理异常参数?

带有@Valid的注释用于帮助我们检查参数。在最初定义的统一异常处理类中,我们可以捕捉methodirgumentnotvalidexc

如何处理SpringBoot全局异常与数据校验?

这个问题其实是两个方面,一个是SpringBoot的全局异常处理方法,一个是SpringBoot的数据验证。让 让我们一个一个来。

事实上,全局异常处理需要我们统一捕获和处理系统运行中的异常,具体的处理逻辑是根据业务进行的,可以记录在日志中,由前端返回,再由前端提示。

那么如何捕获和处理这样的全局异常呢?

在SpringBoot中,有一个注解——@ controller advice。由该注释修改的bean表示它已经启用了全局异常的捕获。我们只需要在这个带注释的类中定义一个方法,使用@ExceptionHandler的注释,我们需要定义要捕获的异常的类型,来统一处理这些捕获的异常。

在实际生产中,我们通常会为业务定义一些自定义异常来捕捉业务中不合理的情况,比如数据异常;然后由@ControllerAdvice定义的类中的@ExceptionHandle方法拦截异常,从而捕获并处理异常。

给一个 "栗子 "!

我首先定义了一个新的异常类来捕获业务场景中的各种业务问题:

在业务场景中,如果遇到不正确的操作,将引发以下异常:

抛出的异常将被我们定义的全局异常处理程序捕获和处理:

至此,实现了SpringBoot的全局异常处理。

让 让我们来谈谈题主提到的数据验证。通常我们在操作数据时,不仅前端需要对数据进行验证,后端也要进行拦截并给出相应的。

我们可以使用SpringBoot中包含的hibernate-validator来做这件事。

既然hibernate-validator已经包含在spring-boot-starter-web中,我们就不做 不需要介绍jar。

给一个 "栗子 "!

在需要验证的实体类中,我们使用相应的注释。常见的注释有很多,最常见的是 amp的判断非空 ",即@NotBlank注释:

然后,在控制器层中,将通过用@Valid注释进行标记来检查接收实体:

验证失败后,我们可以定义一个全局异常处理程序来捕获数据验证。失败,从而返回到统一的返回值处理。

当两者结合时,可以优雅地实现用于数据验证的全局异常捕获的统一处理。

欢迎关注我的头条【首页程序员】继续思考有趣的标题(不是内容哈哈)。

——一个闲来无事,呆在家里的家庭程序员。我不 我不想掉头发!)

全局 数据 SpringBoot 处理 业务

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。