Ir para o conteúdo do rodapé
Iron Academy Logo
Aplicação C#
Aplicação C#

Outras categorias

Exibição de exceções de formatação - Série Spectre Console

Tim Corey
8m 51s

Ao criar um aplicativo de console .NET , muitas vezes é necessário lidar com exceções de uma forma que faça sentido tanto para os desenvolvedores quanto para os usuários. A saída simples do console pode fazer com que as exceções pareçam longas sequências de dados ilegíveis — especialmente ao lidar com rastreamentos de pilha e bibliotecas que utilizam muita reflexão. Em seu vídeo " Formatação da Exibição de Exceções - Série Spectre Console ", Tim Corey nos mostra como usar a biblioteca Spectre.Console para tornar as exceções mais fáceis de ler, analisar e entender.

Neste artigo, exploraremos como Tim lida com exceções, usa comandos e métodos do Spectre.Console e aplica diferentes configurações e estilos à exibição de exceções.

Introdução: Por que formatar exceções?

No início do vídeo, Tim Corey apresenta o Spectre.Console, descrevendo-o como uma biblioteca que ajuda os desenvolvedores a transformar seus aplicativos de console simples em "aplicativos visualmente atraentes e informativos". Nesta lição específica, ele se concentra em como lidar com exceções de uma forma que torne sua exibição mais clara e legível.

Tim explica que, por padrão, quando uma exceção é lançada em um aplicativo de console, a saída que você obtém de Console.WriteLine(ex) é apenas um bloco de texto. Inclui caminhos, rastreamentos de pilha e nomes de tipos — tudo como uma string contínua. É funcional, mas não é amigável.

Para demonstrar, Tim cria um pequeno exemplo:

try
{
    throw new Exception("You forgot to give me the data.");
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}
try
{
    throw new Exception("You forgot to give me the data.");
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

Ele executa esse comando no terminal e, como esperado, a saída é confusa. Tudo se mistura. Tim comenta que é difícil distinguir o que importa — a mensagem, o método ou a localização do arquivo. Então ele decide corrigir isso usando a formatação de exceções do Spectre.Console.

Usando AnsiConsole.WriteException – O primeiro passo

Para melhorar a exibição, Tim substitui a linha:

Console.WriteLine(ex);
Console.WriteLine(ex);

com um comando Spectre:

AnsiConsole.WriteException(ex);
AnsiConsole.WriteException(ex);

Essa única chamada de método muda tudo.

Quando ele executa o aplicativo novamente, a saída no terminal agora está colorida. A mensagem aparece claramente e as seções do rastreamento de pilha são estilizadas de forma diferente. O texto fica mais fácil de analisar e os valores-chave se destacam.

Tim destaca que a classe AnsiConsole atua como o ponto de acesso central no Spectre.Console para renderizar a saída estilizada. O método WriteException() foi projetado especificamente para lidar com exceções e formatá-las automaticamente para você.

Ele diz: "Isso já é um avanço." O console agora destaca a mensagem, o caminho do arquivo e o nome do método, tornando-o muito mais fácil de ler rapidamente.

Adicionando opções de formatação com ExceptionFormats

Após mostrar o exemplo básico, Tim vai um passo além, adicionando parâmetros de formatação para controlar quais partes da exceção são exibidas e como são abreviadas.

Ele apresenta a enumeração ExceptionFormats, que oferece diversas opções como ShortenPaths, ShortenTypes, ShortenMethods e ShowLinks. Você pode usá-los individualmente ou combiná-los usando o pipe (|) personagem.

Tim escreve o seguinte código:

AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything);
AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything);

Ao executar esse comando, a saída do console torna-se mais curta e concisa.

Ele explica que:

  • Os caminhos são abreviados – em vez de mostrar o caminho completo do diretório, mostra apenas o nome do arquivo, como Program.cs.

  • Os tipos são abreviados – em vez de System.IO.InvalidDataException , você vê simplesmente InvalidDataException.

  • Os métodos foram abreviados – nomes de métodos genéricos longos foram reduzidos para maior clareza.

Este exemplo mostra como as opções de formatação de exceção do Spectre.Console tornam o resultado mais compacto sem perder informações essenciais.

Tim enfatiza que a primeira versão (caminho completo e namespaces) contém "principalmente ruído", enquanto esta versão formatada faz mais sentido quando você só quer ver a origem do problema rapidamente.

Combinando múltiplos formatos para maior controle

Tim não para por aí. Ele demonstra como você pode combinar várias configurações de formatação usando o operador pipe:

AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks);
AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks);

Aos 3:54 , Tim explica a opção ShowLinks. Isso permite que o Spectre.Console renderize links de arquivos clicáveis ​​ou interativos em terminais compatíveis. Em seu exemplo, o nome do arquivo Program.cs agora aparece sublinhado. Ao posicionar o cursor sobre o arquivo, o terminal exibe uma dica com o caminho completo do arquivo.

Ele observa que esse comportamento depende do ambiente — funciona melhor em terminais que suportam links clicáveis ​​(como alguns terminais bash ou VS Code).

Ao combinar formatos, você pode decidir exatamente quanta informação sua saída de exceção deve exibir — talvez você queira caminhos abreviados, mas nomes de tipo completos, ou queira ocultar completamente os detalhes do método. Spectre.Console oferece essa flexibilidade.

Aprofundando-se nas configurações de exceção

Nesse ponto, Tim apresenta um novo objeto chamado ExceptionSettings. Isso permite personalizar a formatação e o estilo das exceções de uma maneira mais avançada.

Ele explica que, em vez de passar um único valor de formato, você pode passar um objeto de configurações inteiro:

var settings = new ExceptionSettings
{
    Format = ExceptionFormats.ShortenEverything,
    Style = new ExceptionStyle
    {
        Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
    }
};
AnsiConsole.WriteException(ex, settings);
var settings = new ExceptionSettings
{
    Format = ExceptionFormats.ShortenEverything,
    Style = new ExceptionStyle
    {
        Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
    }
};
AnsiConsole.WriteException(ex, settings);

Aqui, Tim configura duas propriedades:

  • Formato – especifica como as informações da exceção devem ser abreviadas.

  • Estilo – define a aparência de diferentes elementos de exceção (como nomes de métodos, caminhos ou mensagens).

O Spectre.Console oferece um conjunto abrangente de opções de estilo, como cores de primeiro plano, cores de fundo e decorações (como sublinhado, efeito piscante, negrito, etc.).

Tim observa que também é possível estilizar outras partes da exibição da exceção, como nomes de parâmetros, chamadas de métodos ou parênteses — e não apenas a mensagem. Isso permite um controle muito preciso sobre a aparência da saída de exceção na CLI.

Estilizando a mensagem de exceção

Para demonstrar como a estilização funciona na prática, Tim aplica um estilo especificamente à parte da mensagem da exceção. Ele define a cor da mensagem para vermelho e adiciona um efeito de piscada lenta para destacá-la ainda mais:

Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)

Quando ele executa o aplicativo, a mensagem "Ei, você se esqueceu de me enviar os dados." agora pisca em vermelho dentro da janela do terminal.

Tim destaca que isso ajuda a ressaltar a informação mais importante na saída da exceção — a própria mensagem. O restante do texto (como o nome do arquivo e o número da linha) permanece disponível abaixo, mas seu olhar é imediatamente atraído para o que deu errado.

Ele explica: "Isso realmente chama a atenção para o mais importante, que é a mensagem em si." E então eles podem descobrir: "Ah, está na função principal do arquivo Program.cs, na linha 256."

Isso demonstra como o Spectre.Console não apenas torna os dados legíveis, mas também adiciona ênfase e hierarquia visual para ajudar você a interpretar os resultados mais rapidamente.

Concluindo a série de consoles Spectre

Ao final do vídeo, Tim menciona que esta foi a parte final de sua série Spectre.Console — pelo menos por enquanto. Ele incentiva os espectadores a deixarem comentários ou sugestões de novos tópicos em suggestions.iamtimcorey.com .

Ele observa que, ao longo da série, eles abordaram uma variedade de recursos do Spectre: renderização de tabelas, manipulação de comandos e argumentos da CLI, trabalho com texto estruturado e, agora, formatação de exceções.

Tim conclui dizendo que esta lição fornece aos desenvolvedores as ferramentas para lidar com exceções de forma elegante, com clareza e feedback visual — tudo dentro de um aplicativo de console .NET simples.

Considerações finais

Neste tutorial, Tim Corey demonstra claramente como tornar as exceções do Spectre.Console mais legíveis, informativas e visualmente atraentes. Com apenas algumas linhas de código, os desenvolvedores podem:

  • Lidar com exceções de forma mais eficaz.

  • Formate a saída do console com caminhos mais curtos e texto mais limpo.

  • Utilize objetos ExceptionSettings para ajustar o formato e o estilo.

  • Adicione cor e decoração para destacar informações importantes.

  • Exibir os caminhos dos arquivos como links clicáveis ​​ou interativos.

Essa abordagem não só melhora a depuração, como também faz com que os aplicativos baseados em linha de comando pareçam mais refinados e profissionais. Ao combinar métodos poderosos como AnsiConsole.WriteException(), configurações personalizáveis ​​e opções de estilo avançadas, os desenvolvedores podem criar aplicativos de console .NET que fornecem saídas de exceção significativas e bem estruturadas, fáceis de analisar e compreender — exatamente como Tim Corey demonstra em seu excelente exemplo.

Hero Worlddot related to Exibição de exceções de formatação - Série Spectre Console
Hero Affiliate related to Exibição de exceções de formatação - Série Spectre Console

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim