> For the complete documentation index, see [llms.txt](https://demystifyfp.gitbook.io/fstoolkit-errorhandling/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://demystifyfp.gitbook.io/fstoolkit-errorhandling/fstoolkit.errorhandling/task/catch.md).

# catch

### 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:

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

### Examples

Given the function:

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

#### Example 1

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

#### Example 2

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