response.status返回http状态码(如200、404),不自动抛错;需用res.ok或手动判断status范围(200–299)来处理失败;statustext提供状态文本但不可靠,仅用于调试。

在 Fetch API 中,Response 对象提供了 status 和 statusText 属性来检查 HTTP 响应状态,但要注意:它们只反映网络请求是否成功抵达服务器并收到响应,**不自动抛出错误**(比如 404、500 这类非 2xx 状态不会触发 catch)。
用 status 判断 HTTP 状态码
response.status 是一个数字,表示服务器返回的 HTTP 状态码(如 200、404、500)。它可用于条件判断,决定后续逻辑:
- 检查是否为成功的响应(通常指 200–299):
if (response.status >= 200 && response.status - 区分常见错误类型:
if (response.status === 404) { console.log('资源未找到'); }else if (response.status >= 500) { console.log('服务器内部错误'); }
结合 ok 属性快速判断“成功”
response.ok 是一个布尔值,等价于 response.status >= 200 && response.status 。它更简洁,适合基础校验:
if (response.ok) { return response.json(); }else { throw new Error(`HTTP error! status: ${response.status}`); }
注意:fetch 不会因 status 报错,需手动处理
这是初学者容易忽略的关键点:即使服务器返回 404 或 500,只要响应头已接收,fetch() 仍会进入 then 分支,不会跳进 catch。因此必须显式检查 status 或 ok:
- ❌ 错误写法(以为 404 会进 catch):
fetch('/api/data').then(res => res.json()).catch(err => console.error(err)); - ✅ 正确写法(主动拦截非成功状态):
fetch('/api/data')<br> .then(res => {<br> if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`);<br> return res.json();<br> })<br> .catch(err => console.error('请求失败:', err));
获取状态文本(statusText)辅助调试
response.statusText 返回响应的状态消息字符串(如 "OK"、"Not Found"、"Internal Server Error"),常用于日志或用户提示:
console.log(`服务器返回:${response.status} ${response.statusText}`);- 注意:该字段可能为空(尤其在 CORS 场景下受限制),不能依赖它做关键逻辑判断。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











