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

# Tratamento de Erros

> Classes de erro tipadas do SDK SonderCloud

Toda resposta de erro HTTP (4xx/5xx) da API é convertida em uma instância de erro tipada, com `status`, `body` e `url` disponíveis para inspeção.

## Classes de erro

> **SonderCloudApiError**
>
> Erro base. Lançado para qualquer status HTTP de erro sem uma classe mais específica.

> **SonderCloudAuthError**
>
> Token ausente, inválido ou expirado — HTTP 401.

> **SonderCloudNotFoundError**
>
> Recurso inexistente (app ou database) — HTTP 404.

> **SonderCloudValidationError**
>
> Requisição malformada ou parâmetros inválidos — HTTP 400.

`SonderCloudAuthError`, `SonderCloudNotFoundError` e `SonderCloudValidationError` estendem `SonderCloudApiError`, que estende `Error`.

### Campos de `SonderCloudApiError`

| Campo | Tipo | Descrição |
| - | - | - |
| `status` | `number` | Código de status HTTP retornado pela API. |
| `body` | `unknown` | Corpo da resposta de erro, já parseado quando o `Content-Type` for JSON. |
| `url` | `string` | URL que originou o erro. |
| `message` | `string` | Extraída de `body.message` (string ou array) ou `body.error`, quando disponível. |

## Exemplo de tratamento

```ts theme={null}
import { SonderCloudNotFoundError, SonderCloudAuthError, SonderCloudApiError } from '@sonder/sdk';

try {
  await sonder.apps.get(appId);
} catch (err) {
  if (err instanceof SonderCloudNotFoundError) {
    console.log('Aplicação não encontrada.');
  } else if (err instanceof SonderCloudAuthError) {
    console.log('Token inválido ou expirado.');
  } else if (err instanceof SonderCloudApiError) {
    console.log(`Erro da API: ${err.status} — ${JSON.stringify(err.body)}`);
  } else {
    // Erro de rede, timeout ou erro de programação
    throw err;
  }
}
```

> [!WARNING]
>
> Timeouts não lançam `SonderCloudApiError` — lançam um `Error` genérico informando a URL e o timeout configurado (`timeoutMs`, padrão 30000ms). Trate esse caso separadamente se precisar de retry.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.