logotipo Blog Giovani Da Cruz
C#

Tratamento de exceções em C# com filtros

4 min de leitura 42 visualizações
Tratamento de Exceções em C# com Filtros
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 catch com o filtro when captura somente exceções cujo Message contenha a palavra “específico”.
  • As demais exceções são tratadas pelo bloco catch gené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

 

 

Deixe um comentário

Seu e-mail não será publicado.