Erros
Toda função de rota falha com ErroAoChamarServico, com o status HTTP e o campo erro da resposta.
Toda falha das funções geradas chega como ErroAoChamarServico, com o mesmo formato nas duas linguagens.
| Tipo (TypeScript) | Variante (Rust) | Quando acontece |
|---|---|---|
falha_ao_montar_requisicao | FalhaAoMontarRequisicao | faltou algo antes de enviar (ex.: segredo do app) |
falha_de_conexao_com_o_servico | FalhaDeConexaoComOServico | rede, DNS, tempo limite |
servico_respondeu_com_erro | ServicoRespondeuComErro | o serviço respondeu 4xx ou 5xx |
resposta_do_servico_em_formato_inesperado | RespostaDoServicoEmFormatoInesperado | a resposta não bate com o contrato |
Campos: nome_do_servico, detalhe, status_http, mensagem_de_erro (o campo erro do corpo, quando o serviço responde { "erro": "..." }) e corpo_da_resposta.
Métodos
| Método | Devolve |
|---|---|
status_http_da_resposta() | o status HTTP, só quando o serviço respondeu com erro |
servico_nao_encontrou_o_registro() | true para 404 |
vale_tentar_de_novo() | true para falha de conexão, 408, 429 e 5xx |
Exemplo
import { ErroAoChamarServico } from "termo_core";
import { buscar_pelo_id_usuario } from "termo_core/auth";
try {
const usuario = await buscar_pelo_id_usuario(credencial_de_acesso, id);
} catch (erro) {
if (erro instanceof ErroAoChamarServico && erro.servico_nao_encontrou_o_registro()) {
// 404: o usuário não existe
} else if (erro instanceof ErroAoChamarServico && erro.vale_tentar_de_novo()) {
// rede ou 5xx: tente mais tarde
} else {
throw erro;
}
}O cancelamento por sinal_de_cancelamento chega como o AbortError do próprio fetch, não como ErroAoChamarServico.