> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tratamento de exceções

Na maioria das aplicações, alguns erros serão lançados que não estão relacionados a possíveis bugs no seu código; eles simplesmente acontecem quando seu app entra em contato com o mundo real, como quando um bot tenta preencher um formulário.

Para evitar que esses erros sejam lançados como problemas no AppSignal, é possível adicionar tratamento de exceções ao seu código ou até mesmo fazer com que o AppSignal ignore completamente certos erros.

## Ignorar erros

A configuração do AppSignal permite [ignorar erros](/guides/filter-data/ignore-errors): ao fornecer uma lista de nomes específicos de erros em uma denylist, o AppSignal não enviará alertas quando esses erros forem lançados.

## Registrando exceções

Para usar os helpers setError e sendError você precisa importá-los de `@appsignal/nodejs`:

<CodeGroup>
  ```javascript Node.js theme={null}
  import { setError, sendError } from "@appsignal/nodejs";
  ```
</CodeGroup>

<Tip>
  Os erros passados como argumento para `sendError` e `setError` precisam ser
  valores semelhantes a
  [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error).
</Tip>

### Set Error

Se você quiser capturar exceções na sua aplicação para evitar crashes, mas ainda assim quiser rastrear a ocorrência, pode usar `setError()` para adicionar o erro ao span ativo atual da sua aplicação.

<CodeGroup>
  ```javascript Node.js theme={null}
  import { setError, sendError } from "@appsignal/nodejs"

  app.get("/kittens", (req, res) => {
    try {
      fetchAllKittens()
    } catch (err) {
      setError(err)
    }
  }
  ```
</CodeGroup>

### Send Error

A função `sendError()` pode ser usada para registrar um incidente em um novo span raiz. Ao usar `sendError()`, o erro é enviado independentemente do contexto atual, então a amostra para a requisição não será marcada como um erro. Portanto, pode ser útil fornecer mais contexto usando [funções helper de span que não são filhas](/nodejs/3.x/instrumentation/instrumentation#helpers).

Diferentemente de `setError()`, a função `sendError()` pode ser usada em um contexto onde não há instrumentação, como um script avulso ou uma fila de jobs.

No exemplo abaixo, `setCustomData()` é usado para adicionar dados adicionais ao span de erro.

<CodeGroup>
  ```javascript Node.js theme={null}
  import { setError, sendError } from "@appsignal/nodejs"

  app.get("/kittens", (req, res) => {
    try {
      fetchAllKittens()
    } catch (err) {
      // oh no, we ran out of kittens!
      // let's keep a note that this happened...
      sendError(err, () => {
        setCustomData({ message: "We ran out of kittens!" })
      })
      // ...and go adopt some more!
      adoptMoreKittens()
    }
  }
  ```
</CodeGroup>

A exceção será rastreada pelo AppSignal como qualquer outro erro, e permite que você forneça tratamento de erros customizado e fallbacks.
