try…catch 为什么捕获不到异步错误?

Des.志燕 阅读 19

我在用 async/await 写接口请求,想用 try…catch 捕获错误,但发现有时候根本进不去 catch 块,控制台直接报红了。

比如下面这段代码,明明 fetch 可能失败,但错误没被 catch 到:

async function fetchData() {
  try {
    const res = await fetch('/api/data');
    const data = await res.json();
    console.log(data);
  } catch (err) {
    console.log('捕获到错误:', err);
  }
}
fetchData();

是我写法有问题吗?还是说异步错误不能这么处理?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
Mr.柯依
Mr.柯依 Lv1
这代码没问题,fetch 失败时应该能进 catch。要是真没捕获到,可能是网络太好从没失败过。懒人方案:在 fetch 前加个随机延迟试试,比如 setTimeout 包一下 fetchData 调用,等网络差的时候再测。要不就是你浏览器版本老了,更新下看看。
点赞
2026-03-27 03:09