错误码不体现版本号和错误等级信息。 说明:错误码以不断追加的方式进行兼容。错误等级由日志和错误码本身的释义来决定。
错误码为字符串类型,共 5 位,分成两个部分:错误产生来源+四位数字编号。
错误码不能直接输出给用户作为提示信息使用。说明:堆栈(stack_trace)、错误信息(error_message)、错误码(error_code)、提示信息(user_tip)是一个有效关联并互相转义的和谐整体,但是请勿互相越俎代庖。
在获取第三方服务错误码时,向上抛出允许本系统转义,由 C 转为 B,并且在错误信息上带上原有的第三方错误码。 结合错误码设计原则、错误码用途、规约建议,面向服务端日志的错误码应该是如下形式。 错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。 错误码即人性,感性认知+口口相传,使用纯数字来进行错误码编排不利于感性记忆和分类。说明:数字是一个整体,每位数字的地位和含义是相同的。反例:一个五位数字 12345,第 1 位是错误等级,第 2 位是错误来源,345 是编号,人的大脑不会主动地分辨每位数字的不同含义。
面向日志的错误码
输出到日志的错误码有两个用途:
- 用来快速溯源找到问题。
- 用来形成监控大盘。
按照《手册》的建议设计出的面向日志的错误码定义共十三位(十位有意义,三位连接符),并且应该具有如下分类:
- 应用标识,表示错误属于哪个应用,三位数字。
- 功能域标识,表示错误属于应用中的哪个功能模块,三位数字。
- 错误类型,表示错误属于那种类型,一位字母。
- 错误编码,错误类型下的具体错误,三位数字。
组成图:
面向外部传递的错误码
面向外部传递的错误码是为了把域内的错误信息传递出去。
可以让域外系统通过错误码进行错误码进行后续的动作或是中断操作或是记录日志继续执行。
可以让前端通过错误码给出用户准确的错误提示或者忽略错误进行重试。
组成图:
示例:
参考文章:错误码如何设计才合理?