Skip to content

错误码速查表

系统错误码采用 5 位数字编码,分为三大类:

错误码分类

类别编码范围说明
A 类A0001-A9999系统级错误
B 类B0001-B9999业务逻辑错误
C 类C0001-C9999第三方服务错误

成功码

错误码说明
00000成功

A 类:系统级错误

错误码HTTP 状态码说明处理建议
A0001400请求参数错误检查请求参数格式
A0002400请求参数为空检查必填参数
A0003400参数验证失败查看具体字段错误
A0101401未登录或 Token 已过期重新登录
A0102401Token 无效清除缓存并重新登录
A0103401Token 已被踢出账号在其他设备登录
A0201403无访问权限联系管理员分配权限
A0202403接口已禁用联系管理员
A0301404请求资源不存在检查 URL 路径
A0401405请求方法不允许检查 HTTP 方法
A0501429请求频率过高降低请求频率
A0502429接口限流等待后重试
A0601500服务器内部错误联系技术支持
A0602500数据库错误联系技术支持
A0603500缓存服务异常联系技术支持
A0701503服务暂时不可用稍后重试

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退款失败联系客服
C0401OSS 上传失败重试或联系技术支持
C0402OSS 下载失败检查文件是否存在

统一错误响应格式

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)
  }
)

最佳实践

  1. 不要硬编码错误码:使用常量或枚举
  2. 提供友好提示:将技术错误转换为用户可理解的提示
  3. 记录日志:错误发生时记录完整上下文
  4. 降级处理:非关键错误允许用户继续操作

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者