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.
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:
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:
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
- Roda o bloco
tenta. - Se tudo der certo → pula o
fodeu, rodano-fim, segue. - Se der erro → pula pra
fodeu(com o erro na variável), rodano-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:
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()