Hyperlinkv0.8.0-beta.28

Effect

Effect.onErrorconsteffect/Effect.ts:6814
<E, X, R2>(cleanup: (cause: Cause.Cause<E>) => Effect<X, never, R2>): <
  A,
  R
>(
  self: Effect<A, E, R>
) => Effect<A, E, R2 | R>
<A, E, R, X, R2>(
  self: Effect<A, E, R>,
  cleanup: (cause: Cause.Cause<E>) => Effect<X, never, R2>
): Effect<A, E, R2 | R>

Runs the specified effect if this effect fails, providing the error to the effect if it exists. The provided effect will not be interrupted.

Example (Running cleanup on failure)

import { Cause, Console, Data, Effect } from "effect"

class TaskError extends Data.TaggedError("TaskError")<{ readonly message: string }> {}

const task = Effect.fail(new TaskError({ message: "Something went wrong" }))

const program = Effect.onError(
  task,
  (cause) => Console.log(`Cleanup on error: ${Cause.squash(cause)}`)
)

Effect.runPromise(program).catch(console.error)
// Output:
// Cleanup on error: TaskError: Something went wrong
// TaskError: Something went wrong
resource management
Source effect/Effect.ts:68149 lines
export const onError: {
  <E, X, R2>(
    cleanup: (cause: Cause.Cause<E>) => Effect<X, never, R2>
  ): <A, R>(self: Effect<A, E, R>) => Effect<A, E, R2 | R>
  <A, E, R, X, R2>(
    self: Effect<A, E, R>,
    cleanup: (cause: Cause.Cause<E>) => Effect<X, never, R2>
  ): Effect<A, E, R2 | R>
} = internal.onError
Referenced by 7 symbols