Error Cause 链式追踪:如同 Monad 的错误传播模式
深入 Error 的 cause 属性与 AggregateError,模仿函数式编程的 Either Monad,构建一个可组合的故障上下文链路,实现多步操作失败时的根因聚合。 · 难度:入门 · +10XP
Error Cause 链式追踪:如同 Monad 的错误传播模式
现代 JavaScript 允许通过 new Error('msg', { cause: previousError }) 创建错误链。本教程将设计一个 Result 类型(类似 Rust 的 Result
class Result {
static ok(value) {
return { success: true, value };
}
static fail(reason, cause) {
return { success: false, error: new Error(reason, { cause }) };
}
}
const step1 = Result.fail('网络错误');
const step2 = step1.success ? Result.ok(step1.value) : Result.fail('第二步', step1.error);
console.log(step2.error.cause.message); // '网络错误'