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:
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 |
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
Use instanceof para verificar o tipo específico de erro e tratar cada caso adequadamente.