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

发布于 2022-09-10 15:24:35 字数 1665 浏览 285 评论 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技术交流群

发布评论

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

关于作者

债姬

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

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