系统错误码定义
在工作过程中,系统的错误码定义非常的乱,对于我来说,开发的过程非常痛苦,经常在同一个错误有多个错误码的情况下,选择困难症得到了最大化的体现。鉴于此,于是下决心自己尝试定义一下系统的错误码。
此文仅表示个人观点,小伙伴们有什么想法可以留言指教一二。
系统错误码的定义我查阅了几个相关资料,目前有一种定义的方式,我个人是非常认同的:设置状态码status,再通过rescode和resmsg,反馈给用户信息,使用者首先看status,再确认错误信息,从而定位错误的原因。
定义错误码,首先需要将系统中的异常进行有效分类。
系统异常分类:
- 系统异常:系统内部抛出未能预先定义的或系统配置异常,需要系统开发人员进行处理的异常
- 非系统异常:是指相关业务类校验异常,业务结果非成功类异常。
系统给使用方的异常也应有分类,
- 接口调用类错误码定义。接口类错误码定义使用字母+单个数字形式。数字从0开始累加,0表示成功。
- 自身系统类错误码定义。自身系统类错误码使用5位错误码。从00000开始累加,00000表示成功。
接口调用类错误码定义添加status,类似于http接口的status状态码。HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。
我的系统参考http接口状态码设定:
| 分类 | 分类描述 | 分类 | 分类描述 | 分类 | 分类描述 |
| h | h代表http协议,表示http接口(下同) | s | s代表SOAP(Simple Object Access Protocol)协议,表示webservice接口 | t | t代表TCP/IP协议,表示socket接口 |
| h1** | 服务器接收到请求,需要请求者继续执行操作 | s1** | 服务器接收到请求,需要请求者继续执行操作 | t1** | 服务器接收到请求,需要请求者继续执行操作 |
| h2** | 操作被成功接收并处理 | s2** | 操作被成功接收并处理 | t2** | 操作被成功接收并处理 |
| h3** | 重定向,需要进一步操作以完成请求 | s3** | 重定向,需要进一步操作以完成请求 | t3** | 重定向,需要进一步操作以完成请求 |
| h4** | 请求错误,请求包含语法错误及无法完成请求 | s4** | 请求错误,请求包含语法错误及无法完成请求 | t4** | 请求错误,请求包含语法错误及无法完成请求 |
| h5** | 服务器错误,服务器在请求过程中发生了错误 | s5** | 服务器错误,服务器在请求过程中发生了错误 | t5** | 服务器错误,服务器在请求过程中发生了错误 |
状态码列表:
| 状态码 | 状态码英文名称 | 状态码中文描述 |
| h200/s200/t200 | success | 请求成功 |
| h400/s400/t400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
| h500/s500/t500 | Server Error | 服务器内部错误,无法完成请求 |
API错误码及错误信息定义0是成功,1~20:业务定义的错误,20~30 服务器错误:
| 状态码 | 错误码 | 描述信息 | 状态码 | 错误码 | 描述信息 |
| h200/s200/t200 | 0 | 请求成功 | h500/s500/t500 | 24 | 空指针异常 |
| h400/s400/t400 | 1 | "参数名"+参数不能为空 | 25 | 接口处理异常 | |
| 2 | "参数名"+参数长度有误 | 26 | 写文件异常 | ||
| 3 | 渠道校验失败 | ||||
| 4 | 场景校验失败 | ||||
| 5 | 类型未维护 | ||||
| h500/s500/t500 | 21 | 外部服务访问超时 | |||
| 22 | 数据库访问失败 | ||||
| 23 | 外部服务异常 |
系统内部错误码定义:系统内部原本没有错误码,但是加上错误码,便于开发定位错误。系统错误码从00000~依次累加
| 错误码 | 描述信息 |
| 00000 | 成功 |
| 00001 | 验证码错误 |
| 00002 | 用户不存在/密码错误 |
| 00003 | 用户已封禁,请联系管理员 |
| 00004 | 角色已封禁,请联系管理员 |
| 00005 | 没有数据权限,请联系管理员 |
| 00006 | 连接超时异常 |
| 00007 | 空指针异常 |
| 00008 | 外部服务拒绝连接 |
| 00009 | 数据库访问出错 |
| 00010 | 线程异常中断 |
未完...待续

浙公网安备 33010602011771号