Effect.matchCause
失敗理由を単なるErrorではなく、Cause (effect)として扱う
通常の失敗とバグ(想定外の例外)を分けて扱いたいときに使う
例
code:ts
const program = Effect.matchCause(effect, {
onSuccess: (value) => Success: ${value},
onFailure: (cause) => {
switch (cause._tag) {
case "Die": return Defect: ${cause.defect}
case "Fail": return Error: ${cause.error.message}
case "Interrupt": return ${cause.fiberId} was interrupted
}
}
})
Causeの種類でmatching