SpringBoot异常处理统一封装我来做-使用篇
摘自:https://www.cnblogs.com/Purgeyao/p/11781408.html
简介
重复功能我来写。在 SpringBoot
项目里都有全局异常处理以及返回包装等,返回前端是带上succ
、code
、msg
、data
等字段。单个项目情况下很好解决,当微服务模块多的情况下,很多情况开发都是复制原有代码进行构建另外一个项目的,导致这些功能升级需要修改多个服务,在这个基础上,我们封装了一个组件 unified-dispose-springboot-starter
里面包含了一些基础的异常处理以及返回包装功能。
1|2依赖添加启动功能
添加依赖
ps: 实际version版本请使用最新版
最新版本:
启动类添加 @EnableGlobalDispose
注解开启以下功能。
1|3One 异常处理⚠️
在项目中经常出现系统异常的情况,比如NullPointerException
等等。如果默认未处理的情况下,springboot
会响应默认的错误提示,这样对用户体验不是友好,系统层面的错误,用户不能感知到,即使为500
的错误,可以给用户提示一个类似服务器开小差
的友好提示等。
模块里以及包含了一些基本的异常处理方式(及不需要做任何代码编写已经具有基本异常处理),以及一些常见的异常code,用户只需要关心业务异常处理即可,直接通过 throw new 异常
的方式抛出即可。
异常处理包含类型
程序主动抛出异常
通常不建议直接抛出通用的BusinessException异常,应当在对应的模块里添加对应的领域的异常处理类以及对应的枚举错误类型。
如会员模块:
创建UserException
异常类、UserErrorCode
枚举、以及UserExceptionHandler
统一拦截类。
UserException:
UserErrorCode:
UserExceptionHandler:
最后业务使用如下:
上述方式,抛出异常后会被模块处理。前台返回如下:
1|4Tow 统一返回封🗳
在REST风格的开发中,避免通常会告知前台返回是否成功以及状态码等信息。这里我们通常返回的时候做一次util
的包装处理工作,如:Result
类似的类,里面包含succ
、code
、msg
、data
等字段。
接口调用处理类似如下:
结果:
功能使用
默认情况所有的 web controller
都会被封装为一下返回格式。
接口:
返回
忽略封装注解:@IgnorReponseAdvice
@IgnorReponseAdvice
允许范围为:类 + 方法,标识在类上这个类下的说有方法的返回都将忽略返回封装。
接口:
返回 test
1|5总结
项目里很多重复的code,我们可以通过一定的方式去简化,以达到一定目的减少开发量。PurgeTeam 具有一些优秀的开源组件,减少日常的开发量。
示例代码地址:unified-dispose-springboot
作者GitHub:
Purgeyao 欢迎关注
qq交流群:
812321371
微信交流群:MercyYao
微信公众号:
__EOF__
出 处:https://www.cnblogs.com/Purgeyao
关于博主:大家好,我是purgeyao 一个落寞在魔都的码农。热爱生活,爱读书/旅游,喜欢技术,乐于专研。评论和私信会在第一时间回复。微博 : Purgeyao 知识星球: [小宇宙](https://t.zsxq.com/NFmyVny), GitHub: [Purgeyao](https://github.com/1346735074)
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!