在 Axios 中使用 catch() 处理错误

Axios 请求是 Promise,这意味着它们有一个 then() 函数 用于 承诺链 ,以及 catch() 处理错误的函数。 以下是您可以如何 catch()Axios 中的错误。

const err = await axios.get(https://httpbin.org/status/404).
  catch(err => err);

err instanceof Error; // true
err.message; // Request failed with status code 404

catch() 完全相同于 Promise 的 catch() 功能 。 所以你可以使用承诺链,并添加一个 catch() 最后处理承诺链中发生的任何错误。

const err = await axios.get(https://httpbin.org/status/200).
  // Will throw a TypeError because the property doesnt exist.
  then(res => res.doesNotExist.throwAnError).
  catch(err => err);

err instanceof TypeError; // true

你也可以使用 catch() 要转换错误,只需确保之后重新抛出错误。

let error;
try {
  await axios.get(https://httpbin.org/status/404).catch(err => {
    if (err.response.status === 404) {
      throw new Error(`${err.config.url} not found`);
    }
    throw err;
  });
} catch (err) {
  error = err;
}

error.message; // https://httpbin.org/status/404 not found

您还可以 使用拦截器自动使 Axios 转换错误

© 版权声明
THE END
喜欢就支持一下吧
点赞89 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容