Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Filtro de exceções utilizando Try-Catch-When com c#

    Filtro de exceções utilizando Try-Catch-When com c#

    Jhonathan SoaresBy Jhonathan Soares12 de fevereiro de 20181 Min Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    A partir da versão 6.0 a linguagem C inclui suporte a filtros de exceção que permite capturar um tipo específico de exceção se uma expressão associada for verdadeira. Você pode filtrar exceções, incluindo uma instrução when após a expressão catch.

    A palavra-chave when funciona como um if. Uma condição when é uma expressão de predicado, que pode ser anexada a um bloco catch. Se a expressão do predicado for avaliada como verdadeira, o bloco de captura associado é executado; Caso contrário, o bloco catch é ignorado.

    No exemplo abaixo, definimos um filtro que não captura a exceção da divisão por zero aos domingos:

        DateTime dia = DateTime.Now;
        CultureInfo idioma = new CultureInfo("pt-BR");
    
        int denominador;
        try
            {
                denominador = 0;
                int x = 5 / denominador;
            }
            // Captura a exceção todos os dias exceto no domingo
        catch (DivideByZeroException ex) when (dia.DayOfWeek != DayOfWeek.Sunday)
            {
            //exibe a data em português
                Console.WriteLine("Hoje é " + dia.ToString("D", idioma));
                Console.WriteLine(ex.Message);
            }
        Console.ReadKey();
        

    Um caso de uso comum são tipos de exceção que são realmente um invólucro para vários tipos de erros diferentes.
    Veja um outro exemplo:
     try
    {
        DatabaseUpdate()
    }
    catch (SQLException e)
    when (driver == "MySQL")
    {
        //MySQL - tratamento de erros específicos e encerramento da exceção
    }
    catch (SQLException e)
    when (driver == "Oracle")
    {
        //Oracle - tratamento de erros específicos e encerramento da exceção
    }
    catch (SQLException e)
    when (driver == "SqlServer")
    {
        //Sql Server - tratamento de erros específicos e encerramento da exceção
    }
    A cláusula when permite expandir esse filtro para expressões genéricas.
    Assim, você usa a cláusula when para casos em que o tipo da exceção não é suficientemente distinto para determinar se a exceção deve ser tratada aqui ou não.
    Fontes: http://www.macoratti.net/13/07/c_excep.htm / https://stackoverflow.com/questions/38497774/catching-exceptions-with-catch-when
    Um grande abraço!
    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile