Skip to content

Latest commit

 

History

History
38 lines (26 loc) · 691 Bytes

File metadata and controls

38 lines (26 loc) · 691 Bytes

Task.catch

Namespace: FsToolkit.ErrorHandling

Creates a Task that attempts to execute the provided task, returning Choice1Of2 with the result if the task completes without exceptions, or Choice2Of2 with the exception if an exception is thrown.

Function Signature:

Task<'a> -> Task<Choice<'a, exn>>

Examples

Given the function:

let taskThrow () =
  task {
    failwith "something bad happened"
    return Error ""
  }

Example 1

let result = Task.catch (Task.singleton 42)
// task { Choice1Of2(42) }

Example 2

let result = Task.catch (taskThrow ())
// task { Choice2Of2(exn("something bad happened")) }