对直接组装的统一错误码,错误消息,进行统一的管理,按照微服务进行错误码进行封装;
封装为组件形式,错误码按照接口的规约进行限制,应用级别的错误码和错误消息分散在微服务中;
错误分两种形式:
1,通过异常输出错误;
2,通过组装错误码和错误消息拼装错误返回信息;
异常分为3类:
1,参数校验或者接口url资源定位不到,需要提示前端调整;
2,内部的逻辑错误或者jvm异常,通过RuntimeException抛出;
3,依赖的公共组件错误,给出环境问题或者调用问题的提示;
后端
形式: 中间件的方式,定义暴露的配置属性,对异常进行统一的处理封装;

这里做一下调整,统一把分散在微服务里面错误码枚举放到团队公共的SDK中;
后端错误的分类:
内部:主要是对前端,大部分错误通过异常的方式抛出,后端做统一的处理;
外部系统:主要对接外部系统,有些是直接拼接错误码和错误消息的方式输出的;
建立在服务可用,即httpStatus=200的基础上,内部异常的分类:
说明
输入参数非法
参数缺失,参数不符合规则要求,请求类型不支持
逻辑错误
不具备操作权限,jvm内部的异常,比如NPE等,方法超时,运行时异常(空指针等)
内部环境错误
依赖的中间件不可用或者调用方法报错,比如SQL写错了了
如果网关服务不可用: nginx需要有对应的40X , 友好json数据
如果网关后面的后端服务不可用: 后端服务需要返回 40X,50X的友好json数据;
nginx 故障
后端网关
后端服务
前端资源
404友好提示页面
不经过
不经过
前端访问后端资源
url错误,浏览器默认404页面
路由找不到,404转换为json数据
40x转换为json数据
50x自然转换成了json数据
查看老业务系统的代码,现在后端的错误处理方式分两种:
说明
目前的缺点
统一异常处理
通过在web-api-service工程中
通过@RestControllerAdvice 标注一个统一的异常处理类
对每一种类别的异常进行处理
统计如下表
异常的层级和分类不够清晰
有些异常 e.getmessage可能是英语,看不懂;
直接拼装错误码和错误消息
分散在业务代码中,见下面的截图和部分代码截取
无法统一管理错误码和错误信息,并且错误信息中无正确操作指引信息
老业务系统统一异常处理分类
【参数不正确是什么意思 参数不对什么意思】父类
错误码
说明
RuntimeException
Exception
推荐阅读
- 李咏是什么癌 李咏的什么癌症
- 萌推是什么平台
- 相观而善之谓摩是什么意思
- style是什么意思中文 奇迹style是什么意思中文
- micron是什么单位
- 汽车美容与洗车的区别是什么
- a手是什么意思
- qss功能 qss功能是什么
- 诺言是什么意思 逝去的诺言是什么意思
- TOT是什么意思
