错误码设计规范探索

简介: 本文介绍了错误码设计规范,包括模块化分层、错误码结构及定义、可扩展性与可维护性等方面。错误码用于标识程序中的特定错误,便于快速定位和解决。文中详细描述了全局通用错误码和业务错误码的设计方法,并提出了5-6位数字编码方案,确保错误码的唯一性和可读性。同时,强调了错误码与日志系统的集成及多语言支持的重要性,提供了多个参考文献供进一步学习。


错误码设计规范

错误码(Error Code)是在计算机科学中用来标识程序或系统中发生特定类型错误的数值。以便快速溯源、简单易记、沟通标准化。

参考工业大公司的实践经验,设计一套属于本公司的错误码规范,以确保自研系统的可维护性、扩展性和可理解性。

一、模块化和分层次:

               ● 全局通用错误码:系统级别的错误,比如权限验证失败、请求参数错误、服务器内部错误等。这些错误码通常是项目的基础框架定义的,能够适用于不同模块和服务。

               ● 业务错误码:业务层的错误通常是针对具体业务场景的,比如用户相关的操作失败、订单处理出错等。业务错误码往往是各个模块自己定义的,但可以遵循某种规范,便于统一管理。

               ● 模块细化:按功能模块来细化错误码。例如,1000 系列的错误码对应的是用户相关的错误,2000 系列的错误码是订单相关的,3000 系列的错误码是订单审计相关的。这有助于快速定位问题所在的模块。

二、定义和结构

一种较简单的错误码格式:纯数字错误码, 5~6 位数,其中不同位代表不同的信息。例如:

               ● 前两位:系统或模块标识

               ● 中间两位:具体的业务功能

               ● 后两位:错误的具体类型 这样设计不仅能防止错误码冲突,也能通过错误码快速分析问题。

例如:

               ● 100xx 表示用户模块,10001 表示用户未找到,10002 表示用户权限不足。

               ● 200xx 表示订单模块,20001 表示订单未支付,20002 表示订单已取消。

三、可扩展性与可维护性

               ● 动态扩展:在设计错误码时为未来的功能扩展留出空间。比如每个模块设计时可能会预留一定的错误码范围(步长间距),以便未来新增业务时,不会影响现有业务逻辑。

               ● 统一管理:错误码集中在一个公共的配置文件或数据库中统一管理,例如Enum枚举表,数据库错误词典等。

               ● 高效查阅:错误码一般不直接展示给用户,需要前端转义或处理;错误码规范更多是面向开发团队,包括前端、后端、测试都参与问题排查过程,因此需要提供详细的错误文档说明,方便开发人员查阅和维护。

四、错误码与日志/监控系统集成

           1.    错误码和错误日志的区别和关系

错误码(Error Code)和错误日志(Error Log)都是在软件开发和系统管理中用来诊断和解决问题的重要措施,但它们有着不同的作用和表现形式。

区别:

               ○ 形式:错误码是一个简短的标识符,而错误日志是一段文本信息或者数据库记录,也可以设计一套结构化的错误类。

               ○ 用途:错误码主要用于快速识别错误类别;错误日志则提供了更详细的错误信息。

               ○ 细节程度:错误码通常不会包含太多细节,而错误日志可以包含丰富的上下文信息。

关系

尽管错误码和错误日志有区别,但它们通常是相辅相成的。当一个错误发生时,程序可能会同时记录错误日志并返回一个错误码。在排查问题时,错误码可以帮助快速定位到问题的类型,而错误日志则提供了具体发生了什么以及在什么样的环境下发生的上下文。结合使用两者可以使问题解决更加高效。

           2.    日志系统

需要建立一套日志系统(监控大盘),通过日志系统记录错误码和错误信息,便于后续的监控和问题排查。这些日志通常会被发送到集中式的日志服务,比如 ELK 或者 Splunk,开发人员可以通过错误码快速定位问题。

一种方案:NLog + Splunk 方案:将 NLog 作为.NetCore后端的日志记录框架;Splunk 作为日志管理和分析平台,二者联合构成日志系统。

五、多语言支持

错误码的国际化(Internationalization,常简写为i18n)是指使错误信息能够适应不同语言和地区的用户需求的过程,而不需要重新设计软件。这包括但不限于将错误信息翻译成不同的语言,以及确保这些信息符合当地的文化习惯和阅读习惯。

参考:

《阿里巴巴java开发手册》 (错误码如何设计才合理?-阿里云开发者社区)

《Google API Design Guide 》(《Google API Design Guide (谷歌API设计指南)中文版》 - 书栈网 · BookStack)

《阿里云-文件存储-错误码》(NAS API调用出现问题时返回的错误码信息-阿里云帮助中心_(NAS)-阿里云帮助中心)

《微博开放平台-API-错误码》(Help/error - 微博API)

《腾讯开放平台-错误码》(https://wiki.open.qq.com/wiki/%E9%94%99%E8%AF%AF%E7%A0%81)

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
监控 前端开发 Java
错误码如何设计才合理?
对于错误码的设计,不同的开发团队有不同的风格习惯。本文分享阿里文娱技术专家长统对于错误码的看法,希望从错误码使用的不同场景讨论得到一个合理的错误码规约,得到一个面向日志错误码标准和一个面向外部传递的错误码标准。
13243 3
错误码如何设计才合理?
|
4月前
|
存储 运维 监控
后端接口错误码到底该怎么设计?我见过最烂的和最优雅的两种方案
本文剖析后端错误码设计的典型反模式(滥用HTTP状态码、错误码混乱、散落各处)与优雅方案:统一HTTP 200响应,集中注册数字错误码(如10001参数错、40002兑换码无效),按模块分段管理,并通过(errno, data)接口规范提升前后端协作与排查效率。
后端接口错误码到底该怎么设计?我见过最烂的和最优雅的两种方案
|
10月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过YAML配置表达式规则。支持AST语法树解析、上下文构建与动态执行,提供脚本缓存、别名映射、指令重写等扩展能力,适用于灵活的业务逻辑解耦与动态化控制。
|
缓存 算法 API
从 0 实现 API 接口签名验证系统:基于 HMAC-SHA256 的防篡改方案(附 Python 全代码)
本文介绍基于 的 API 接口签名验证系统,实现防篡改与防重放攻击,包含完整设计原理、签名生成规则及可运行的 Python 客户端与服务端代码,并提供安全性优化与部署建议。
|
消息中间件 监控 Java
一款开源的 Kafka 管理平台
Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能
3547 1
|
运维 Prometheus 监控
java异常 | 处理规范、全局异常、Error处理
java异常 | 处理规范、全局异常、Error处理
|
消息中间件 中间件 Kafka
分布式事务最全详解 ,看这篇就够了!
本文详解分布式事务的一致性及实战解决方案,包括CAP理论、BASE理论及2PC、TCC、消息队列等常见方案,助你深入理解分布式系统的核心技术。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式事务最全详解 ,看这篇就够了!
Java 异常处理:11 个异常处理最佳实践
本文深入探讨了Java异常处理的最佳实践,包括早抛出晚捕获、只捕获可处理异常、不忽略异常、抛出具体异常、正确包装异常、记录或抛出异常但不同时执行、不在finally中抛出异常、避免用异常控制流程、使用模板方法减少重复代码、抛出与方法相关的异常及异常处理后清理资源等内容,旨在提升代码质量和可维护性。
991 3
|
前端开发 安全 小程序
如何设计 API 接口,实现统一格式返回?
如何设计 API 接口,实现统一格式返回?
905 0
|
人工智能 弹性计算 算法
“通义点金”升级!
“通义点金”升级!
1629 0

热门文章

最新文章