arrow_back Voltar ao curso

tenta / fodeu — Tratando Erros

Fundamentos do XanaScript • Aula 11 de 20

Erros acontecem: arquivo não existe, JSON quebrado, API fora do ar. Código que não trata erros quebra no meio do caminho. O tenta / fodeu é a rede de segurança.

js
tenta {
  cria resultado = 10 / 0
} fodeu (erro) {
  grita-ae("Deu ruim: " + erro)
}

Por que tratar erros é essencial?

Sem tratamento, um erro aborta o programa inteiro no meio da execução. Com tratamento, você decide o que fazer: mostrar uma mensagem amigável, tentar de novo, usar um valor padrão.

no-fim (finally) — roda sempre

O bloco no-fim roda com ou sem erro — perfeito pra limpeza:

js
tenta {
  cria dados = desembola(texto)
} fodeu (erro) {
  grita-ae("JSON inválido: " + erro)
} no-fim {
  grita-ae("operação terminou")
}

Exemplo real: JSON que pode falhar

desembola (JSON.parse) é o erro mais comum de se tratar:

js
tenta {
  cria dados = desembola("{"nome": "Ana"}")
  grita-ae(dados.nome)
} fodeu (err) {
  grita-ae("Erro: " + err)
}

Se o JSON for inválido, o programa não quebra — imprime o erro e segue.

O fluxo de controle do tenta

  1. Roda o bloco tenta.
  2. Se tudo der certo → pula o fodeu, roda no-fim, segue.
  3. Se der erro → pula pra fodeu (com o erro na variável), roda no-fim, segue.

Erros em código assíncrono

Erros de rede (API fora do ar, timeout) só aparecem depois do await — por isso o tenta é indispensável:

js
cria run = assincrono () => {
  tenta {
    cria res = stalkeia("https://api.exemplo.com/users/1")
    grita-ae(res)
  } fodeu (err) {
    grita-ae("Falha na rede: " + err)
  }
}

aguenta-ai run()
Comentários