As Exceptions muitas vezes, elas são apresentadas fora de contexto.
O Verdadeiro papel
Exception é exatamente o que o nome sugere: uma exceção a um fluxo definido. O desafio está em como você trata e manipula essas exceções. O ponto central é planejar como lidar com elas de forma eficaz.
A realdide nas Aplicações
Toda aplicação está sujeita a fluxos de exceção. O que importa é se o seu fluxo é capaz de manipular e tratar essas exceções, mantendo a estabilidade e a consistência dos resultados.
A falta de conexto
Exception é lenta e cara porque gera informações relevantes sobre o fluxo executado, exigindo a parada do processamento principal para registro de todo o fluxo. Argumentar que Exception é lenta sem contexto é um desserviço, desviando do objetivo principal: tornar sua aplicação resiliente a falhas.
Cada Contexto nos leva a uam escolha de pattern.
Contexto é tudo!Não use Exception para controlar fluxos de negócio. Sério mesmo?
Vamos a 2 cenários xomo exemplo
- Duplicate Key: Um método que grava dados no banco e retorna uma falha de “duplicate key” indica uma falha de lógica ou concorrência. Esse erro permite continuar o fluxo de negócio, se devidamente tratado, garantindo a consistência dos dados subsequentes.
- Não importa quantas vezes você tente executar provavelmente sempre terá o mesmo resultado.
- Unable to connect Database: Já uma falha de conectividade e requer um tratamento diferente, pois pode ser uma falha transitória que deve ser tratada para obter sucesso.
- Existe a possibilidade de ser uma falha transitória que eventualmente pode e deve ser tratada por sua aplicação para obter o sucesso desejado.
Boas Práticas
- Exceptions disparadas em regras de negócio devem estar relacionadas a falhas sistêmicas de infraestrutura e/ou suas dependências, e não relacionadas à lógica de negócio.
- Mapear as Exceptions (AggregateException, DivideByZeroException entre todas as outras classes de Exception) para direcionar para as classes Exceptions correta também é recomendado, sendo que ela lhe trará muito mais informações importantes para tratar estes fluxos do que declarar tudo como Exception.
- Result pattern é uma alternativa, mas lembre-se de aplicá-lo com o contexto adequado.
Evite gerar Exception sempre que possível, mas faça isso pelos motivos certos!
Tenham um excelente dia! Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável.






