使用 Axios 处理 AxiosError 的三种常见方法

本文介绍了在使用Axios进行HTTP请求时,如何通过try-catch语句、interceptors拦截器以及axios.isAxiosError方法来有效地捕获和处理各种类型的错误,包括响应状态码异常、请求失败和设置请求错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在使用 Axios 时处理 AxiosError 有几种常见的方法:

  1. 使用 try-catch 语句捕获异常:
try {
  const response = await axios.get('/api/data');
  // 处理响应数据
} catch (error) {
  if (error.response) {
    // 请求成功但状态码不在 2xx 范围
    console.log(error.response.data);
    console.log(error.response.status);
    console.log(error.response.headers);
  } else if (error.request) {
    // 请求发出但没有收到响应
    console.log(error.request);
  } else {
    // 在设置请求时发生了错误
    console.log('Error', error.message);
  }
}
  1. 使用 Axios 实例的 interceptors 拦截器:
const instance = axios.create();

instance.interceptors.response.use(
  (response) => {
    // 处理成功响应
    return response;
  },
  (error) => {
    // 处理错误响应
    if (error.response) {
      // 请求成功但状态码不在 2xx 范围
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // 请求发出但没有收到响应
      console.log(error.request);
    } else {
      // 在设置请求时发生了错误
      console.log('Error', error.message);
    }
    return Promise.reject(error);
  }
);
  1. 使用 axios.isAxiosError() 判断错误是否来自 Axios:
axios.get('/api/data')
  .then((response) => {
    // 处理响应数据
  })
  .catch((error) => {
    if (axios.isAxiosError(error)) {
      // 处理 AxiosError
      if (error.response) {
        // 请求成功但状态码不在 2xx 范围
        console.log(error.response.data);
        console.log(error.response.status);
        console.log(error.response.headers);
      } else if (error.request) {
        // 请求发出但没有收到响应
        console.log(error.request);
      } else {
        // 在设置请求时发生了错误
        console.log('Error', error.message);
      }
    } else {
      // 处理其他类型的错误
      console.log('Error', error);
    }
  });
### 如何拦截处理 AxiosError使用 `axios` 进行 HTTP 请求时,可能会遇到各种类型的错误。为了更好地管理和处理这些错误,可以利用中间件或其他机制来统一捕获并处理 `AxiosError` 实例。 #### 使用自定义请求和响应拦截器 通过配置全局的请求或响应拦截器,可以在每次发送请求前或接收到响应后执行特定逻辑。对于错误处理而言,在响应拦截器中加入错误捕捉逻辑是最常见的做法: ```javascript import axios from 'axios'; // 创建一个新的 axios 实例 const instance = axios.create(); // 添加响应拦截器 instance.interceptors.response.use( response => { // 对于成功的响应不做特殊处理,直接返回原始数据 return response; }, error => { const {response, request} = error; if (error instanceof axios.AxiosError) { switch (error.code) { case "ERR_NETWORK": console.error("网络连接失败"); break; default: console.error(`未知错误: ${JSON.stringify(error.message || '')}`); } } else if (!response && !request){ console.error('无法获取服务器响应'); } throw error; // 继续抛出异常让调用者知道发生了什么 } ); ``` 此代码片段展示了如何创建一个带有自定义行为的新 `axios` 客户端实例,并为其设置了一个响应拦截器用于检测并分类不同种类的 `AxiosError` 错误[^1]。 此外还可以考虑引入第三方库如 `redux-saga` 或者 `RTK Query` 来更优雅地管理异步操作及其可能产生的错误情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值