> ## Documentation Index
> Fetch the complete documentation index at: https://trigger-v3-fix-additional-files.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# io.try()

> `io.try()` allows you to run Tasks and catch any errors that are thrown, it's similar to a normal `try/catch` block but works with [io.runTask()](/sdk/io/runtask).

A regular `try/catch` block on its own won't work as expected with Tasks. Internally `runTask()` throws some special errors to control flow execution. This is necessary to deal with resumability, serverless timeouts, and retrying Tasks.

## How to `catch` errors inside `run()`

You have two options:

1. Use the `io.try()` function documented on this page.
2. Use a regular `try/catch` block and [isTriggerError](/sdk/isTriggerError) to check if the error is a special error type.

## Parameters

<ResponseField name="tryCallback" required>
  The code you wish to run
</ResponseField>

<ResponseField name="catchCallback" required>
  This will be called if the Task fails. The callback receives the error
</ResponseField>

## Returns

<ResponseField name="return" required>
  A Promise that resolves with the returned value or the error
</ResponseField>

<RequestExample>
  ```typescript Using io.try()
  client.defineJob({
    id: "get-repo-info",
    name: "GitHub get repo info",
    version: "0.1.0",
    integrations: { github },
    trigger: eventTrigger({
      name: "repo.info",
      schema: z.object({
        owner: z.string(),
        repo: z.string(),
      }),
    }),
    run: async (payload, io, ctx) => {
      //try
      const result = io.try(
        async () => {
          const repo = await io.github.getRepo("get-repo", {
            owner: payload.owner,
            repo: payload.repo,
          });

          return {
            success: true as const,
            repo,
          };
        },
        async (error) => {
          //you can return data from the error handler,
          //if you wish to elegantly deal with errors
          return {
            success: false as const,
            error,
          };
        }
      );

      //result is either
      // { success: true, repo: Repo }
      // or
      // { success: false, error: Error }

      return result;
    },
  });
  ```
</RequestExample>
