try…catch 为什么捕获不到异步错误?
我在用 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();
是我写法有问题吗?还是说异步错误不能这么处理?
Mr.柯依
Lv1
这代码没问题,fetch 失败时应该能进 catch。要是真没捕获到,可能是网络太好从没失败过。懒人方案:在 fetch 前加个随机延迟试试,比如 setTimeout 包一下 fetchData 调用,等网络差的时候再测。要不就是你浏览器版本老了,更新下看看。
点赞
2026-03-27 03:09