You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios请求的catch方法回调传入的error参数是否为布尔值?

axios catch 回调的error参数结构

catch接收的error对象在不同错误场景下包含的字段有区别,核心字段如下:

  • error.response:请求已成功发出、服务器返回非2xx范围状态码时存在,包含3个核心子字段:
    • data:服务器返回的错误响应体,结构和正常请求的response.data一致
    • status:HTTP状态码,常见的如404、500、401等
    • headers:服务器返回的响应头
  • error.request:请求已发出但未收到服务器任何响应时存在,常见场景如跨域被拦截、网络断开、请求超时,浏览器环境下该字段是XMLHttpRequest实例
  • error.message:所有错误场景都存在的文本提示,比如"Network Error"、"Request aborted"这类直观错误说明
  • error.config:所有错误场景都存在,存储发起请求时传入的所有配置项,用于定位出错的请求

axios请求核心原理

axios本质是对不同环境底层请求能力的Promise封装,浏览器环境基于XMLHttpRequest实现,Node环境基于http/https模块实现,完整请求流程如下:

  1. 调用axios.get()时,首先合并传入的请求配置和全局默认配置,生成最终请求配置对象
  2. 执行预先配置的请求拦截器,可在该阶段统一修改请求头、注入鉴权token等
  3. 根据运行环境调用对应的底层请求方法发起真实网络请求
  4. 收到响应后先执行预先配置的响应拦截器,可在该阶段统一处理异常状态码、格式化返回数据
  5. 如果响应状态码符合validateStatus配置的校验规则(默认是200-299区间),则进入then回调,否则进入catch回调
  6. 若请求过程中出现网络异常、请求超时、主动取消请求等情况,也会直接进入catch回调

代码优化建议

你提供的代码有两处可优化的点:

  • 拼写问题:responce应为response,符合通用命名规范
  • catch回调建议做分级处理,更便于排查问题:
axios.get('https://jsonplaceholder.typicode.com/posts')
  .then(response => {
    console.log(response)
    this.setState({ posts : response.data })
  })
  .catch(error => {
    if (error.response) {
      // 服务器返回错误状态码
      console.log('服务器错误:', error.response.status, error.response.data)
    } else if (error.request) {
      // 未收到服务器响应
      console.log('网络异常:', error.request)
    } else {
      // 配置错误导致请求未发出
      console.log('请求配置错误:', error.message)
    }
    console.log('出错请求配置:', error.config)
  })

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:15:02