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

发布于 2022-09-10 15:24:35 字数 1665 浏览 294 评论 0

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 doesn't 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 转换错误

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

债姬

暂无简介

文章
评论
27 人气
更多

推荐作者

夢野间

文章 0 评论 0

doggiejohn

文章 0 评论 0

就此别过

文章 0 评论 0

初见终念

文章 0 评论 0

qq_rvKjBH

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文