设计一个 小游戏平台的错误码规范,需要做到:
- 统一规范:所有服务、接口、SDK 使用同一套错误码标准。
- 可扩展性:支持多模块、多语言(前端、后端、SDK)。
- 可诊断性:既能给用户友好的提示,又能给开发者提供精确的调试信息。
- 多层次信息:错误码(Code)、错误信息(Message)、调试上下文(Detail/Trace ID)。
小游戏平台错误码规范(详细版)
1. 错误码结构设计
采用 五位数字码 + 模块前缀 的形式:
[A][BB][CCC]
A → 错误级别(1=系统级,2=业务级,3=第三方依赖)
BB → 模块编码(两位)
CCC → 具体错误编号(三位)
示例
10001 → 系统错误(未知错误)201001 → 用户模块(01)登录失败202002 → 游戏模块(02)上传文件过大203003 → 支付模块(03)回调签名验证失败
2. 模块划分(BB)
| 模块编码 | 模块名称 | 说明 |
|---|
| 01 | 用户模块 | 注册、登录、认证、权限 |
| 02 | 游戏模块 | 上传、审核、分发、运行 |
| 03 | 支付模块 | 订单、支付、提现、回调 |
| 04 | 广告模块 | 广告投放、点击、归因 |
| 05 | 开发者模块 | 报表、收益、工具、插件 |
| 06 | 数据分析 | 埋点、推荐、BI 报表 |
| 07 | 风控安全 | 反作弊、限流、黑名单 |
| 99 | 系统级错误 | 通用错误、服务不可用 |
3. 错误级别(A)
| 级别 | 范围 | 说明 |
|---|
| 1 | 1xxxx | 系统级错误(全局) |
| 2 | 2xxxx | 业务逻辑错误(可预期) |
| 3 | 3xxxx | 第三方依赖错误(支付、云存储等) |
4. 错误码设计示例
系统级错误(1xxxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 10001 | 系统错误,请稍后再试 | 500 | 未知错误 |
| 10002 | 请求参数无效 | 400 | 参数格式/必填项缺失 |
| 10003 | 服务不可用 | 503 | 微服务宕机或熔断 |
| 10004 | 权限不足 | 403 | 用户未授权 |
| 10005 | 请求过于频繁 | 429 | 限流保护 |
用户模块(2-01-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 201001 | 登录失败,用户名或密码错误 | 401 | 登录校验失败 |
| 201002 | Token 无效或已过期 | 401 | JWT 校验失败 |
| 201003 | 用户未实名 | 403 | 需要实名认证 |
| 201004 | 用户被冻结 | 403 | 风控冻结 |
游戏模块(2-02-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 202001 | 游戏上传失败 | 400 | 文件损坏/不支持格式 |
| 202002 | 游戏包大小超过限制 | 400 | >500MB |
| 202003 | 游戏审核未通过 | 403 | 违规内容 |
| 202004 | 游戏下架 | 404 | 游戏已被删除或下架 |
支付模块(2-03-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 203001 | 支付订单不存在 | 404 | 无效订单号 |
| 203002 | 支付失败 | 402 | 支付网关拒绝 |
| 203003 | 回调签名验证失败 | 400 | 安全校验未通过 |
| 203004 | 提现处理中 | 409 | 幂等性保护 |
广告模块(2-04-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 204001 | 广告库存不足 | 404 | 无可展示广告 |
| 204002 | 广告点击无效 | 400 | 作弊/重复点击 |
| 204003 | 广告结算失败 | 500 | 广告竞价异常 |
开发者模块(2-05-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 205001 | 报表数据延迟 | 202 | 数据同步中 |
| 205002 | 提现申请超限 | 400 | 超过每日限额 |
| 205003 | 插件上传失败 | 400 | 包格式错误 |
风控安全模块(2-07-xxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 207001 | 账号涉嫌作弊 | 403 | 行为检测异常 |
| 207002 | IP 黑名单限制 | 403 | 拦截访问 |
| 207003 | 请求异常高频 | 429 | 触发限流 |
第三方依赖错误(3xxxx)
| 错误码 | 错误信息 | HTTP 状态码 | 说明 |
|---|
| 301001 | 支付网关超时 | 504 | 微信/支付宝超时 |
| 301002 | CDN 分发失败 | 502 | CDN 节点错误 |
| 301003 | 云存储服务不可用 | 503 | OSS/S3 故障 |
5. 错误响应格式(API 统一规范)
{
"code": 201002,
"message": "Token 无效或已过期",
"detail": "jwt signature invalid",
"trace_id": "abc123xyz",
"timestamp": "2025-09-27T10:20:30Z"
}
code → 错误码(唯一标识)message → 面向用户的友好提示detail → 面向开发者的调试信息(可选)trace_id → 便于日志追踪和问题定位timestamp → 出错时间
6. 设计原则
- 前后端统一:前端展示
message,后台日志记录 detail。 - 可国际化:
message 支持 i18n(中/英/日)。 - 幂等设计:支付、广告上报等接口必须返回一致的错误码,避免重复处理。
- 安全性:对外屏蔽敏感调试信息(如 SQL 错误、栈信息)。
- 文档化:所有错误码需在 API 文档/Swagger 中列出。
📌 一句话总结:
小游戏平台的错误码规范需要 模块化、统一化、可追踪,既能保证用户友好提示,又能帮助开发者快速定位问题,同时考虑国际化和合规性。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。