ASP.NET: Gerenciamento e monitoramento de exceções

O manuseio de exceção no ASP.NET é um mecanismo crucial de desenvolvimento de aplicativos.

 

Quando as exceções ocorrem com freqüência, coisas como aumento do consumo de tempo de CPU, vazamento de memória e lentidão da aplicação têm maiores chances de acontecer. No caso de exceções não captadas, o tempo de execução do aplicativo pode terminar. Se um aplicativo pode lidar com vários tipos de exceções, ele será mais robusto e menos propenso a falhar.

 

Uma vez que o manuseio de exceções é vital para o desenvolvimento de aplicativos, rastreá-los e monitorá-los é significativo para a otimização de desempenho de aplicativos. As exceções devem ser rastreadas porque são um tesouro de informações. Nos ambientes de aplicativos complexos de hoje, as exceções atuam como beacons para navegar a causa raiz de muitos problemas potenciais.


Continue lendo para aprender sobre como lidar com exceções no ASP.NET e várias formas de usar o agente AP4 Insight .NET do Site24x7 para rastreá-las.

 

O que é uma exceção?

 

An exception is an execution fault or a conditional error that occurs during a program’s execution. In general, when an exception is thrown, it’s generated from where the problem occurred; exceptions are created as objects in .NET Framework and are inherited from the System.Exception base class. The exception is passed up the stack until the application handles it or the program terminates.

Uma exceção é uma falha de execução ou um erro condicional que ocorre durante a execução de um programa. Em geral, quando uma exceção é lançada, ela é gerada de onde o problema ocorreu; as exceções são criadas como objetos no .NET Framework e são herdadas da classe base System.Exception. A exceção é passada para cima até o aplicativo lidar com ele ou o programa terminar.

Em geral, as exceções podem ser tratadas por um bloqueio try-catch-finally no código para evitar que ele ocorra.

 

Blocos try-catch-finally


Try-catch-finally são comumente usados ​​em conjunto no código para obter e usar os recursos em um bloco experimentar, lidar com circunstâncias excepcionais em um bloco capturar e liberar os recursos no finally block. Uma declaração try-catch contém um bloco try seguido de uma cláusula catch, que deve capturar uma exceção com base em seu tipo.

 

Um aplicativo deve usar múltiplos blocos de captura para lidar com diferentes tipos de exceções. Categorizar diferentes tipos de exceções fornece alguma visibilidade no tipo exato de um problema.

 

Como o Site24x7 instrumenta os blocos try-catch-finally

 

O agente da APM Insight. Net registra as exceções captadas através de provedores de registro (como log4net, NLog, Serilog e Enterprise Library) e mostra as exceções retiradas de suas respectivas transações.

 

A Figura 1 mostra o código com vários blocos de captura, cada um com diferentes tipos de exceção, que serão capturados por vários provedores de log. Nos casos em que as exceções não são capturadas por provedores de log, eles podem ser rastreados usando a API do agente .NET adicionando o seguinte linha de código para os blocos de captura desejados: DotNetAgent.Api.CustomTracker.TraceError (exceção);


Figura 1. Exemplo de código com blocos de captura para vários tipos de exceções.


Hierarquia de tratamento de exceções do ASP.NET no Site24x7


Em um aplicativo da Web do ASP.NET, as exceções são tratadas com base na seguinte hierarquia:

  • Nível de aplicação
  • Nível da página
  • Nível de código
    Manipulação de erros em aplicativos de formulário na web
    Gerenciamento de erros em aplicativos MVC
    Manipulação de erros no nível da aplicação

 

Os erros padrão no nível do aplicativo podem ser gerenciados, modificando a configuração do aplicativo ou adicionando um manipulador Application_Error no arquivo Global.asax do aplicativo. Todas as exceções não tratadas serão redirecionadas para este evento globalmente, portanto, uma página de erro pode ser implementada como parte desse evento de redirecionamento.

Figura 2. Uma exceção, HttpUnHandledException, é capturada e exibida.



O recurso APM Insight do Site24x7 captura exceções no nível do aplicativo, adicionando o código da API ao evento Application_Error. A Figura 2 mostra uma HttpUnHandledException sendo capturada e é exibida sob os detalhes de rastreamento da transação “ticketweb/movie/checkavailability.”

 

Manipulação de erros no nível da página



As exceções no nível da página são tratadas enviando usuários para uma página de erro que exibe uma mensagem de erro pré-configurada. Todas as instâncias de controle normalmente renderizadas na página serão ocultas, mostrando apenas o erro.

Figura 3. Quando uma exceção não é tratada pelos blocos try ou catch, uma página de erro é mostrada com uma mensagem pré-configurada.

 


Exceções específicas do nível de página podem ser rastreadas usando a API do agente. O rastreamento completo do monte de uma exceção é mostrado nos detalhes de rastreamento de transações respectivos. Isso ajuda no rastreamento de onde uma exceção particular é lançada.



Manipulação de erros no nível do código



Em aplicativos de formulários na web:


Quando uma exceção é lançada em aplicativos de formulário na web, o tempo de execução de linguagem comum (CLR) procura o bloco de captura correspondente para lidar com essa exceção. Se o método que está sendo executado não contém o bloco de captura, então o CLR sobe através da pilha de chamadas procurando o método que chamou o método atual.

Figura 4. Um método para lidar com exceções no nível do código.

 

 

As exceções de nível de código são tratadas através de loggers ou a API do agente .NET. Então, a APM Insight captura essas exceções, juntamente com a gravidade da exceção, a mensagem, o tipo e o rastreamento da pilha.

Em aplicações MVC:

Nos aplicativos MVC, as exceções são tratadas no controlador ou nível de ação. O atributo HandleError ajuda no rastreamento de exceções no nível do código; A Figura 5 mostra um exemplo disso.

Figura 5. As exceções destacadas são tratadas pelo atributo HandleError. As exceções serão redirecionadas para a página de exibição de erro fornecida e mostrarão suas respectivas transações e rastreios de pilha. O atributo HandleError pode ser implementado no controlador ou nível de ação, conforme ilustrado.


O APM Insight rastreia essas exceções automaticamente, sem precisar de trechos de código adicionais. Essas exceções serão mostradas na guia Exceções, juntamente com sua freqüência.



Usando loggers personalizados para rastrear exceções

 

As exceções também podem ser tratadas através de métodos de registro personalizados criados por um usuário. As exceções capturadas por métodos de log personalizados podem ser registradas em um arquivo, banco de dados ou log de eventos. Essas exceções são rastreadas através da API do .NET Agent e exibidas em intervalos de tempo respectivos.

 


Figura 6. O código realçado mostra um exemplo de método de logging personalizado.

 

A Figura 6 mostra um método de exemplo, LogException, que seria usado para registrar exceções, e os dados de exceção seriam armazenados com sua mensagem, tipo e stacktrace.

Ao usar o APM Insight do Site24x7, essas exceções podem ser acompanhadas pela adição de uma linha de código dentro dos métodos de registro personalizados mencionados acima. Na Figura 6, as exceções SQL rastreadas através do registrador personalizado serão mostradas acima das transações respectivas que são lançadas durante esta exceção SQL.

 

Em geral, a APM Insight monitora todas as exceções que ocorrem em um aplicativo. Essas exceções são rastreadas e apresentadas com uma visão que é dividida com base em suas respectivas transações. Além disso, o gráfico da linha de tempo fornece uma visão geral de quantas vezes uma exceção é lançada, com base em seu nível de gravidade.

Figura 7. Apresentação do Site24x7 das transações agrupadas pelo tipo de exceção (à esquerda) e uma quebra da linha de tempo da contagem de exceções (à direita).

Então, o que você está esperando? Comece a rastrear suas exceções e otimize o desempenho do seu aplicativo com Site24x7!

Tire todas suas dúvidas.
Entre em contato com o time da ACSoftware que teremos o prazer em lhe ajudar com o Site 24×7.

ACSoftware / Figo Software seu Distribuidor e Revenda ManageEngine no Brasil

Fone (11) 4063 1007 – Vendas (11) 4063 9639

 

 

Deixe uma resposta