错误码速查表
系统错误码采用 5 位数字编码,分为三大类:
错误码分类
| 类别 | 编码范围 | 说明 |
|---|---|---|
| A 类 | A0001-A9999 | 系统级错误 |
| B 类 | B0001-B9999 | 业务逻辑错误 |
| C 类 | C0001-C9999 | 第三方服务错误 |
成功码
| 错误码 | 说明 |
|---|---|
00000 | 成功 |
A 类:系统级错误
| 错误码 | HTTP 状态码 | 说明 | 处理建议 |
|---|---|---|---|
| A0001 | 400 | 请求参数错误 | 检查请求参数格式 |
| A0002 | 400 | 请求参数为空 | 检查必填参数 |
| A0003 | 400 | 参数验证失败 | 查看具体字段错误 |
| A0101 | 401 | 未登录或 Token 已过期 | 重新登录 |
| A0102 | 401 | Token 无效 | 清除缓存并重新登录 |
| A0103 | 401 | Token 已被踢出 | 账号在其他设备登录 |
| A0201 | 403 | 无访问权限 | 联系管理员分配权限 |
| A0202 | 403 | 接口已禁用 | 联系管理员 |
| A0301 | 404 | 请求资源不存在 | 检查 URL 路径 |
| A0401 | 405 | 请求方法不允许 | 检查 HTTP 方法 |
| A0501 | 429 | 请求频率过高 | 降低请求频率 |
| A0502 | 429 | 接口限流 | 等待后重试 |
| A0601 | 500 | 服务器内部错误 | 联系技术支持 |
| A0602 | 500 | 数据库错误 | 联系技术支持 |
| A0603 | 500 | 缓存服务异常 | 联系技术支持 |
| A0701 | 503 | 服务暂时不可用 | 稍后重试 |
B 类:业务逻辑错误
用户相关(B01xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0101 | 用户不存在 | 检查用户名 |
| B0102 | 密码错误 | 确认密码 |
| B0103 | 用户已禁用 | 联系管理员 |
| B0104 | 用户已锁定 | 等待解锁或联系管理员 |
| B0105 | 用户名已存在 | 更换用户名 |
| B0106 | 手机号已注册 | 更换手机号 |
| B0107 | 邮箱已注册 | 更换邮箱 |
| B0108 | 旧密码错误 | 确认旧密码 |
| B0109 | 新密码不能与旧密码相同 | 更换新密码 |
角色权限(B02xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0201 | 角色不存在 | 检查角色 ID |
| B0202 | 角色已存在 | 更换角色名称 |
| B0203 | 角色已分配用户 | 先移除用户 |
| B0204 | 不能删除超级管理员 | 无 |
菜单管理(B03xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0301 | 菜单不存在 | 检查菜单 ID |
| B0302 | 菜单名称已存在 | 更换名称 |
| B0303 | 存在子菜单,不能删除 | 先删除子菜单 |
| B0304 | 菜单路由已存在 | 更换路由路径 |
部门管理(B04xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0401 | 部门不存在 | 检查部门 ID |
| B0402 | 部门名称已存在 | 更换名称 |
| B0403 | 存在子部门,不能删除 | 先删除子部门 |
| B0404 | 部门下存在用户 | 先移除用户 |
字典管理(B05xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0501 | 字典类型不存在 | 检查 typeCode |
| B0502 | 字典类型已存在 | 更换编码 |
| B0503 | 字典项不存在 | 检查 ID |
| B0504 | 字典值已存在 | 更换值 |
文件上传(B06xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0601 | 文件大小超过限制 | 压缩或分片上传 |
| B0602 | 文件类型不允许 | 检查允许类型 |
| B0603 | 文件名为空 | 添加文件名 |
| B0604 | 文件上传失败 | 重试或联系技术支持 |
数据权限(B07xx)
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| B0701 | 无数据权限 | 联系管理员 |
| B0702 | 数据不存在 | 检查数据 ID |
| B0703 | 数据已删除 | 刷新列表 |
C 类:第三方服务错误
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| C0001 | 第三方服务调用失败 | 稍后重试 |
| C0101 | 短信发送失败 | 检查手机号 |
| C0102 | 短信验证码错误 | 重新获取 |
| C0103 | 短信验证码已过期 | 重新获取 |
| C0201 | 邮件发送失败 | 检查邮箱地址 |
| C0301 | 支付失败 | 检查支付信息 |
| C0302 | 退款失败 | 联系客服 |
| C0401 | OSS 上传失败 | 重试或联系技术支持 |
| C0402 | OSS 下载失败 | 检查文件是否存在 |
统一错误响应格式
json
{
"code": "B0102",
"message": "密码错误",
"data": null
}前端处理示例
typescript
// src/utils/request.ts
axiosInstance.interceptors.response.use(
response => {
const { code, message } = response.data
if (code !== '00000') {
ElMessage.error(message || '请求失败')
return Promise.reject(new Error(message))
}
return response.data
},
error => {
const { code, message } = error.response?.data || {}
switch (code) {
case 'A0101':
case 'A0102':
case 'A0103':
// Token 失效,跳转登录
router.push('/login')
break
case 'A0201':
case 'A0202':
ElMessage.error('无访问权限')
break
case 'A0501':
case 'A0502':
ElMessage.error('请求过于频繁,请稍后再试')
break
default:
ElMessage.error(message || '系统错误')
}
return Promise.reject(error)
}
)最佳实践
- 不要硬编码错误码:使用常量或枚举
- 提供友好提示:将技术错误转换为用户可理解的提示
- 记录日志:错误发生时记录完整上下文
- 降级处理:非关键错误允许用户继续操作
