Error エフェクトは、Eval
エフェクトと
Either
エフェクトを合わせたもので、「左」側を
Either[Throwable, F]
としている。その狙いは、例外ないしは失敗を表す任意の型どちらかを使って失敗できる計算を表現することだ。できることは、
ok で遅延された計算を作る
fail(f: F) で失敗させる。ここで
F は失敗を表す型だ
exception で例外を投げる
他にも便利なコンビネーターが利用できる。
andFinally(last)
は例外や失敗が発生したときでも実行されるアクションを登録する
orElse
はアクションを実行し、それが成功しなかったときに別のアクションを実行させる
whenFailed は
orElse と同様だが、but uses the
error for
action1
のエラーを使って次に実行するアクションを決められる
Error エフェクトを実行すると
Either[Error, A] が返ってくる。ここで
Error は
Either[Throwable, Failure]
のエイリアスだ。
Error オブジェクトはこのエフェクトを
String を
Failure
型として実装してはいるが、自分たちの失敗データ型を作り、Error[MyFailureDatatype]
トレイトを実装することを推奨する。