JavaScript Error Cause 错误链
Error Cause(ES2022附带提案):new Error('msg',{cause:originalError})、聚合错误链(上层错误包装底层错误保留调用栈)、error.cause获取包装原因、Sentry/错误监控中展示完整错误链 · 难度:入门 · +10XP
JavaScript Error Cause —— 错误链完整追踪
当你捕获底层错误后抛出一个上层错误时,原来的错误信息就丢了。ES2022的Error Cause让你把底层错误附加到上层错误上。
基本用法
function processUserData(raw) {
try {
return JSON.parse(raw);
} catch (parseErr) {
throw new Error('用户数据格式错误', { cause: parseErr });
}
}
try { processUserData('invalid json'); }
catch (err) {
console.log(err.message); // '用户数据格式错误'
console.log(err.cause); // SyntaxError: Unexpected token...
}
动手练习
- 基础练习:模拟多层调用,每层用Error Cause包装底层错误。
- 进阶应用:写一个logError函数,递归打印完整的Error Cause链。
- 项目实战:在API层用Error Cause模式统一包装数据库和网络错误。