核心是解析响应体中的业务错误码(如code字段),而非仅依赖HTTP状态码;应在axios响应拦截器中统一处理,按code值分类跳转登录、提示权限、展示校验信息或上报异常,并增加类型转换与缺失防护。

在 JavaScript 接口调用中处理服务器返回的自定义错误码,核心是:不只依赖 HTTP 状态码,还要解析响应体,主动检查业务字段(如 code、status 或 errCode),再根据具体数值做差异化处理。
统一拦截响应并解析业务错误码
推荐在请求封装层(如 axios 的 response interceptor)集中处理。服务器通常返回类似这样的 JSON:
{
"code": 40001,
"message": "用户未登录",
"data": null
}
此时不能只看 response.status === 200 就认为成功——HTTP 状态码可能仍是 200(业务成功/失败都走 200)。关键步骤是:
- 先确保响应体可解析(
response.data存在且为对象) - 检查预定义的错误码字段(如
data.code !== 0或data.code >= 40000) - 根据
code值跳转登录、提示重试、或上报监控
按错误码分类响应,避免 if-else 堆砌
把常见错误码逻辑拆解成映射表或策略函数,提升可维护性。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 认证类(如 40001、40002):清 localStorage,跳转登录页
- 权限类(如 40301、40302):提示“无操作权限”,隐藏对应按钮
-
参数/业务校验类(如 40010、40011):提取
message直接展示给用户 - 服务异常类(如 50001、50002):记录 Sentry,提示“稍后重试”并提供刷新按钮
请求时保留原始上下文,方便错误定位
在报错时,除了显示用户友好的提示,还应保留调试信息:
- 在控制台打印完整响应:
console.warn('API error', { url, method, data, response }) - 错误提示文案区分环境:开发环境显示
code + message,生产环境只显示友好文案 - 对关键接口(如支付、提交订单)的失败,额外上报
url、code、timestamp到埋点系统
前端也要有兜底容错,别完全信任后端 code
实际开发中常遇到:后端误将错误码写成字符串("40001")、code 字段缺失、或 message 为空。因此需加防护:
- 用
Number(data.code)转换再比较,避免字符串比较出错 - 设置默认行为:若无
code字段或解析失败,按网络错误或未知异常处理 - 对高频错误码(如 40001)做节流提示,防止弹窗连刷

















