O Que É Tratamento de Erros? Lidando com Falhas Graciosamente
Tratamento de erros é como um programa antecipa, detecta e responde a falhas para poder se recuperar ou falhar graciosamente em vez de travar de forma imprevisível.
As coisas dão errado: arquivos estão ausentes, redes caem, entradas são malformadas. Tratamento de erros é a disciplina de esperar essas falhas e decidir o que fazer a respeito, repetir, recorrer a um fallback, reportar ou sair de forma limpa, em vez de deixá-las travar o programa ou, pior, corromper dados silenciosamente. Bom tratamento de erros é o que separa código frágil de software robusto.
Formas de tratar erros
- Exceções com try/catch para separar a lógica de erro do caminho feliz.
- Valores de erro de retorno que os chamadores devem verificar explicitamente.
- Tipos Result ou Option que forçam o tratamento em tempo de compilação.
- Retries com backoff para falhas transitórias e recuperáveis.
Falhe em alto e bom som, não em silêncio
O pior tratamento de erros é engolir um erro e continuar como se nada tivesse acontecido, o que esconde bugs e corrompe o estado. Bom tratamento ou se recupera de forma significativa ou expõe a falha claramente, nunca a ignora quietamente.
Erros transitórios vs permanentes
Algumas falhas são transitórias (um blip momentâneo de rede) e valem um retry; outras são permanentes (entrada inválida) e repetir só desperdiça tempo. Distinguir as duas é central: repita as recuperáveis, falhe rápido no resto.
Degradação graciosa
Sistemas robustos degradam graciosamente: se um serviço não crítico falha, o app continua com funcionalidade reduzida em vez de colapsar inteiramente. O tratamento de erros decide quais falhas são fatais e quais podem ser toleradas.
Um exemplo rápido
Envolver uma chamada de rede em retry-with-backoff lida com um blip transitório automaticamente, enquanto um erro claro é lançado se a chamada continuar falhando após várias tentativas.
Tratamento de erros em CI
O CI falha por duas razões: bugs reais (determinísticos, corrija-os) e soluços transitórios de infraestrutura (uma rede ou registry instável, repita-os). A Latchkey aplica exatamente essa lógica, repetindo automaticamente falhas transitórias como blips de rede ou OOM kills enquanto deixa erros genuínos falharem para que sejam corrigidos.
Principais conclusões
- Tratamento de erros antecipa e responde a falhas para que programas degradem graciosamente.
- Nunca engula erros silenciosamente: recupere-se de forma significativa ou exponha-os claramente.
- Distinguir falhas transitórias de permanentes decide o que repetir versus corrigir.