springboot项目全局异常统一处理,springboot统一处理异常

  springboot项目全局异常统一处理,springboot统一处理异常

  

目录

一业务场景二全局系统异常类一)全局系统异常类二)包装异常返回结果给前端,修改自定义异常三返回案例

 

  

一 业务场景

调用接口时需要对属性进行校验,比如属性长度,当属性为邮箱时校验邮箱格式等,这时候要要用到@已验证注解,在使用这个注解后发现出现了一个问题,调用接口后并没有返回我们想要的报错结果,而是返回了对象=IMMessageSend 的消息 : 验证失败。错误计数: 1 ,显然这不是我们想要的结果,查看控制台打印,发现如下输出:

 

  org。spring框架。网络。servlet。MVC。支持。defaulthandlerexception解决程序行:199-已解决[org。spring框架。网络。绑定。methoduargumentnotvaliexception :对公共通讯。夏令时。中旬。常见。实体。结果网站。夏令时。消息。核心。常见。模型。即时消息响应com。夏令时。消息。核心。模块。生意。打开。发送消息控制器。发送消息(com。夏令时代码[长度IMMessageSend.msg,Length.msg,Length.java.lang.String,Length];参数[组织。spring框架。语境。支持。defaultmessagesourceresolvable :代码[immessagesend。味精,味精];参数[];默认消息[msg],5,0];默认消息[消息长度不能大于500个字符]] ]

  原因是异常拦截字符串太长,这时候我们需要定义全局异常处理,来多系统抛出的异常进行拦截处理

  

二 全局系统异常类

 

  

一)全局系统异常类

@ data public class im message send {/* * *发送消息信息*/@Length(max=500,message=消息长度不能大于500个字符)私串msg/** *接收用户编号集合*/private ListString接收userids/** * 发送用户id */私有字符串send userid } @ Slf4j @ restcontrolleradvice public类ExceptionHandlerConfig {![图片。巴布亚新几内亚](https://P6-金爵)。字节img。com/tos-cn-I-k 3u 1 FBP FCP/210 abf 8 f 82204 ea 18 c 9 af 123 dcb 4a 7 f 3 ~ tplv-k 3u 1 FBP FCP-水印。形象?) /** * 自定义验证异常*/@异常处理程序(methodgargumentnotvaliexception。类)公共对象handlemethodgargumentnotvaliexception(methodgargumentnotvaliexception e){返回新结果(false, 99999999 ,e.getBindingResult().getFieldErrors().流()。映射(字段错误:3360 getdefaultmessage).收藏(收藏者。联接( n ));}}@RestControllerAdvice与@ExceptionHandler搭配使用可以对异常进行拦截e.getBindingResult().getFieldErrors().流()。映射(字段错误: getdefaultmessage)对异常进行拦截并遍历返回异常

 

  

二) 包装异常返回结果给前端,修改自定义异常

新建一个自定义异常:

 

  公共类midroute异常扩展运行时异常{私有静态最终字符串ERROR _ MESSAGE _ FORMAT=执行路由流程异常:% s ;public MidRouteException(字符串错误){ super(字符串。格式(ERROR _ MESSAGE _ FORMAT,ERROR));} }在断言中使用自定义异常:

  公共类MidAssert { /** *断言执行异常* * @param isTrue判断标识* @param消息异常信息*/public static void isTrueWithSqlException(boolean为true,字符串消息){ if(!为真){ throw new MidRouteException(message);} }在全局异常处理中对异常进行操作:

  /** * 拦截midsql异常midsql帧异常MidRouteException MidRouteFrameException异常*/@异常处理程序({ midsql Exception。class,MidSqlFrameException.class,MidRouteException.class,MidRouteFrameException.class})公共结果string midRouteExceptionHandler(http servlet请求req,http servlet响应res,异常e) { log.error(中台异常,e);返回新结果(false, 99999999 ,e . getmessage());}

  

三 返回案例

 

  这就是这篇分享SpringBoot全局异常处理方案的文章。有关SpringBoot全局异常处理的更多信息,请搜索Popular IT之前的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: