RSS

ASP.NET MVC – Rastreando Exceptions utilizando StackTrace

06 jan

Olá,

Neste artigo irei demonstrar como podemos realizar um rastreamento e tratamento de Exceptions geradas, utilizando para tanto um recurso do .NET chamado StackTrace. A classe StackTrace fica localizada dentro da referência System.Diagnostics, que por sua vez oferece classes que permitem a interação com os processos do sistema, logs de evento e contadores de performance.

Vamos iniciar criando um projeto simples de ASP.NET MVC e modificando a ActionResult  Index, localizada dentro do Controller Index para que fique da seguinte forma, conforme a Listagem 1:

 

Listagem 1

Como podemos ver, no momento em que a aplicação iniciar e chamar a ActionResult Index, uma exceção será gerada informando um erro de conversão de string para integer. Neste momento é chamado um método chamado TrataErro no próprio Controller que recebe como parâmetro a Exception gerada, após mantém o retorno do método em uma  ViewData chamada erro.

Até aqui não vimos nada de mais, porém, agora que vem o interessante. Vamos criar efetivamente o método TrataErro conforme a Listagem 2, atente-se apenas de importar o namespace System.Diagnostics:

 

Listagem 2

 

Note que no método é criado uma instância de StackTrace com base na Exception enviada como parâmetro. Observe que é realizado o rastreamento utilizando o método GetFrame.

Agora basta criarmos a ViewData erro na página Index para que o resultado do rastreamento seja exibido na página. Vamos criar conforme a Listagem 3:

 

Listagem 3

 

Pronto, basta executarmos nossa aplicação e veja na página o resultado do rastreamento!

 

Para mais informações sobre StackTrace clique aqui.

 

Até o próximo artigo.

Anúncios
 
4 Comentários

Publicado por em 06/01/2011 em ASP.NET, ASP.NET MVC, C#

 

Tags: , , , ,

4 Respostas para “ASP.NET MVC – Rastreando Exceptions utilizando StackTrace

  1. Mirandinha

    06/01/2011 at 11:57 am

    Muito bom o artigo! Um tanto quanto familiar…. he… he… he…

     
  2. icemacs

    21/09/2011 at 8:37 pm

    Primeiramente muito bacana o artigo, Estou começando em MVC e me ajudou muito. Uma coisa que fiz diferente do artigo foi criar uma classe na Controler, herdando da Controler, e dando um override no OnException….
    Dessa forma, independente de try/catch, o log é gravado. 🙂

    public class BaseController : Controller
    {
    protected override void OnException(ExceptionContext filterContext)
    {
    base.OnException(filterContext);

    this.GetLog().Error(filterContext.Exception);
    }

    private NLogLogger GetLog()
    {
    return new NLogLogger();
    }
    }

     
    • Rafael Zaccanini

      21/09/2011 at 9:00 pm

      Obrigado icemacs,

      Muito bom sua solução também, na verdade em um ambiente de produção e corporativo utilizo uma solução parecida. 🙂

      Abs,

       

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: