springboot接口参数注解怎么处理异常参数?
带有@valid的注释用于帮助我们检查参数。在最初定义的统一异常处理类中,我们可以捕捉methodirgumentnotvalidexc
如何处理springboot全局异常与数据校验?
这个问题其实是两个方面,一个是springboot的全局异常处理方法,一个是springboot的数据验证。让让我们一个一个来。
事实上,全局异常处理需要我们统一捕获和处理系统运行中的异常,具体的处理逻辑是根据业务进行的,可以记录在日志中,由前端返回,再由前端提示。
那么如何捕获和处理这样的全局异常呢?
在springboot中,有一个注解——@controlleradvice。由该注释修改的bean表示它已经启用了全局异常的捕获。我们只需要在这个带注释的类中定义一个方法,使用@exceptionhandler的注释,我们需要定义要捕获的异常的类型,来统一处理这些捕获的异常。
在实际生产中,我们通常会为业务定义一些自定义异常来捕捉业务中不合理的情况,比如数据异常;然后由@controlleradvice定义的类中的@exceptionhandle方法拦截异常,从而捕获并处理异常。
给一个"栗子"!
我首先定义了一个新的异常类来捕获业务场景中的各种业务问题:
在业务场景中,如果遇到不正确的操作,将引发以下异常:
抛出的异常将被我们定义的全局异常处理程序捕获和处理:
至此,实现了springboot的全局异常处理。
让让我们来谈谈题主提到的数据验证。通常我们在操作数据时,不仅前端需要对数据进行验证,后端也要进行拦截并给出相应的。
我们可以使用springboot中包含的hibernate-validator来做这件事。
既然hibernate-validator已经包含在spring-boot-starter-web中,我们就不做不需要介绍jar。
给一个"栗子"!
在需要验证的实体类中,我们使用相应的注释。常见的注释有很多,最常见的是amp的判断非空",即@notblank注释:
然后,在控制器层中,将通过用@valid注释进行标记来检查接收实体:
验证失败后,我们可以定义一个全局异常处理程序来捕获数据验证。失败,从而返回到统一的返回值处理。
当两者结合时,可以优雅地实现用于数据验证的全局异常捕获的统一处理。
欢迎关注我的头条【首页程序员】继续思考有趣的标题(不是内容哈哈)。
——一个闲来无事,呆在家里的家庭程序员。我不我不想掉头发!)
原文标题:spring boot 全局异常 springboot接口参数注解怎么处理异常参数?,如若转载,请注明出处:https://www.taihaichina.com/tag/22885.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「泰海号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。