症状
控制台记录 Uncaught (in promise) TypeError,且常带延迟、堆栈起点位于框架代码中。包裹调用的 try/catch 似乎不起作用。
诊断
沿异步堆栈追踪,并在访问属性前打印取值:
async function load() {
const res = await fetch('/api/user'); // no catch
const data = await res.json();
console.log(data); // inspect shape
return data.profile.name; // TypeError if profile missing
}
load(); // returned promise unhandled
修复
处理 rejection 并校验数据形状:
async function load() {
try {
const data = await (await fetch('/api/user')).json();
return data?.profile?.name ?? 'anonymous';
} catch (err) {
console.error('load failed', err);
return null;
}
}
await load(); // or void load().catch(...)
验证
再次触发该操作;控制台不再有未处理的 promise 错误,界面展示数据或受控的错误状态。