Tratamento de exceções em C# com filtros

O tratamento de exceções é uma parte essencial de qualquer aplicação robusta, e em C#, temos ferramentas poderosas para lidar com erros de forma eficiente. Uma dessas ferramentas é o uso de filtros de exceções com o modificador when. Neste post, vamos explorar como eles funcionam e por que você deve considerá-los no seu código.
O Problema dos Blocos Múltiplos de catch
Quando trabalhamos com tratamento de erros, é comum encontrarmos cenários em que precisamos capturar diferentes tipos de exceções ou lidar com condições específicas. Uma abordagem tradicional seria criar vários blocos catch, como no exemplo abaixo:
try
{
// Código que pode lançar exceções
throw new Exception("Erro específico");
}
catch (InvalidOperationException ex)
{
Console.WriteLine("Operação inválida: " + ex.Message);
}
catch (Exception ex)
{
if (ex.Message.Contains("específico"))
{
Console.WriteLine("Erro específico capturado: " + ex.Message);
}
else
{
Console.WriteLine("Erro geral: " + ex.Message);
}
}
Embora funcional, essa abordagem pode levar a repetições de código e dificultar a legibilidade, especialmente quando o número de condições cresce.
A Solução com when
Com o modificador when, podemos capturar exceções com base em condições específicas, tudo em um único bloco. Veja como o exemplo acima pode ser reescrito:
try
{
// Código que pode lançar exceções
throw new Exception("Erro específico");
}
catch (Exception ex) when (ex.Message.Contains("específico"))
{
Console.WriteLine("Erro específico capturado: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Erro geral: " + ex.Message);
}
Neste caso:
- O bloco
catchcom o filtrowhencaptura somente exceções cujoMessagecontenha a palavra “específico”. - As demais exceções são tratadas pelo bloco
catchgenérico.
Vantagens de Usar Filtros com when
Foco e Legibilidade: O código fica mais organizado, com as condições claramente definidas dentro dos filtros, evitando duplicação de lógica.
Clareza: Você pode lidar diretamente com os cenários relevantes, destacando os casos mais críticos e deixando o tratamento genérico para o final.
Eficiência: Como os filtros são avaliados antes de entrar no bloco catch, eles evitam a execução desnecessária de lógica em exceções irrelevantes.
Cenários de Uso
Os filtros de exceção são úteis em diversas situações, como:
- Lidar com erros de conexão baseados em códigos de status específicos.
- Capturar exceções relacionadas a dados inválidos com base em mensagens ou propriedades específicas.
- Tratar condições específicas em exceções personalizadas.
Exemplo com exceções personalizadas:
public class CustomException : Exception
{
public int ErrorCode { get; }
public CustomException(string message, int errorCode) : base(message)
{
ErrorCode = errorCode;
}
}
try
{
throw new CustomException("Erro crítico", 404);
}
catch (CustomException ex) when (ex.ErrorCode == 404)
{
Console.WriteLine("Erro 404 capturado: " + ex.Message);
}
catch (CustomException ex)
{
Console.WriteLine("Erro geral: " + ex.Message);
}
Conclusão
O modificador when no tratamento de exceções em C# é uma poderosa ferramenta que pode melhorar a clareza e a eficiência do seu código. Ele permite que você lide com exceções de forma mais precisa, reduzindo duplicações e facilitando a manutenção.
Comece a usar filtros com when e veja como eles podem simplificar o tratamento de erros em seus projetos. Experimente aplicar essa técnica e compartilhe suas experiências nos comentários!
Adoraríamos saber a sua opinião! 💬
Deixe seu comentário abaixo e compartilhe conosco o que você pensa sobre o Tratamento de Exceções em C# com Filtros.
Sua participação é muito importante para nós! 😊👇
💻 Compartilhe o post com outras pessoas se você acho ele interessante! 😊
📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩💻 🔍✨
Até o próximo post. Valeu! 👋📖
#CSharp #Programação #DesenvolvimentoDeSoftware
#BoasPráticas #TratamentoDeErros #CodigoLimpo
#DevLife #DicasDeProgramação
#GiovaniDaCruz