Ajax 错误处理需区分网络层、HTTP 状态码和业务错误三类:fetch 需手动检查 response.ok,XMLHttpRequest 在 onload 判断 status;HTTP 200 响应仍需校验业务 code 字段;须捕获网络异常与超时,并统一封装错误处理逻辑。

Ajax 处理服务端错误码,核心在于区分网络层错误、HTTP 状态码异常和业务逻辑错误三类情况,并在对应位置做判断和响应。
检查 HTTP 状态码(如 4xx / 5xx)
XMLHttpRequest 或 fetch 默认不会因 400、500 等状态码抛错(fetch 尤其注意:它只在网络失败时 reject,4xx/5xx 仍算“成功”返回)。必须手动判断 response.status:
- 使用 fetch 时,在
then中检查:if (!response.ok) { console.error('HTTP error:', response.status); } - 使用 XMLHttpRequest 时,在
onload中判断:if (xhr.status >= 400) { /* 处理错误 */ } - 常见需拦截的状态码:400(参数错误)、401(未登录)、403(无权限)、404(接口不存在)、500(服务异常)
解析并校验业务错误码(如 { code: 1001, msg: "用户名已存在" })
即使 HTTP 状态是 200,服务端也可能返回自定义错误结构。务必在 JSON 解析后检查业务字段:
- 约定统一字段名(如
code、status或errno),避免每个接口字段不一致 - 典型处理模式:
if (data.code !== 0 && data.code !== 200) { showTip(data.msg || '操作失败'); } - 对特定错误码做定向处理:例如
code === 401触发登出并跳转登录页;code === 1003提示用户联系客服
捕获底层异常与超时
网络中断、跨域拒绝、请求被取消、超时等场景需单独兜底:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
fetch:用
catch捕获网络错误或AbortController中断异常 -
XMLHttpRequest:监听
onerror(网络失败)、ontimeout(超时)、onabort(主动取消) - 建议设置合理超时(如 10s),避免请求长期挂起;超时后可提示“网络较慢,请稍候重试”
统一错误处理入口(推荐封装)
避免每个请求重复写判断逻辑,应封装请求函数,集中处理错误分支:
- 封装层自动检查 status、解析 JSON、校验 code 字段、分发错误类型
- 提供钩子(如
onAuthError、onBusinessError)供业务层定制响应 - 记录错误日志(含 URL、method、code、msg、时间戳),便于排查问题
不复杂但容易忽略:服务端错误码要和前端约定清楚文档,前端不能只依赖 HTTP 状态,也不能盲目信任 200 响应体。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










