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

# Tratamento de Erros

> Entenda as classes de erro e como tratá-las

Quando o SDK não consegue conectar à API ou quando a API retorna um código de status não-sucedido (4xx ou 5xx), uma subclasse de `APIError` será lançada:

```typescript theme={null}
import Triglit from 'triglit';

const client = new Triglit({ apiKey: 'pk_...' });

try {
  const trigger = await client.triggers.create({
    config: {},
    name: 'x',
    type: 'event',
    workflowVersionId: 'x',
  });
} catch (err) {
  if (err instanceof Triglit.APIError) {
    console.log(err.status); // 400
    console.log(err.name); // BadRequestError
    console.log(err.headers); // {server: 'nginx', ...}
    console.log(err.message); // Mensagem de erro
  } else {
    throw err;
  }
}
```

## Classes de Erro

O SDK fornece classes de erro específicas para cada código de status:

| Status Code | Classe de Erro             |
| ----------- | -------------------------- |
| 400         | `BadRequestError`          |
| 401         | `AuthenticationError`      |
| 403         | `PermissionDeniedError`    |
| 404         | `NotFoundError`            |
| 422         | `UnprocessableEntityError` |
| 429         | `RateLimitError`           |
| >=500       | `InternalServerError`      |
| N/A         | `APIConnectionError`       |

## Exemplo com Verificação de Tipo

```typescript theme={null}
import Triglit from 'triglit';

const client = new Triglit({ apiKey: 'pk_...' });

try {
  const workflow = await client.workflows.retrieve('invalid_id');
} catch (error) {
  if (error instanceof Triglit.NotFoundError) {
    console.error('Workflow não encontrado');
  } else if (error instanceof Triglit.AuthenticationError) {
    console.error('Chave de API inválida');
  } else if (error instanceof Triglit.RateLimitError) {
    console.error('Rate limit excedido');
  } else if (error instanceof Triglit.APIError) {
    console.error(`Erro da API: ${error.status} - ${error.message}`);
  } else {
    // Erro não relacionado à API
    throw error;
  }
}
```

## Propriedades dos Erros

Todas as classes de erro herdam de `APIError` e incluem:

* **`status`**: Código de status HTTP (se disponível)
* **`name`**: Nome da classe de erro
* **`headers`**: Headers da resposta HTTP
* **`message`**: Mensagem de erro descritiva

<Tip>
  Use `instanceof` para verificar o tipo específico de erro e tratar cada caso adequadamente.
</Tip>
