设计一个 小游戏平台的错误码规范,需要做到:
- 统一规范:所有服务、接口、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 统一规范)
1
2
3
4
5
6
7
|
{
"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 中列出。
📌 一句话总结:
小游戏平台的错误码规范需要 模块化、统一化、可追踪,既能保证用户友好提示,又能帮助开发者快速定位问题,同时考虑国际化和合规性。