Manipulação e monitoramento de exceções no ASP.NET

Introdução

O tratamento de exceções é um mecanismo crucial de desenvolvimento de aplicativos. Quando as exceções ocorrem com freqüência, coisas como aumento do consumo de tempo da CPU, vazamento de memória e lentidão do aplicativo têm uma chance maior de acontecer. No caso de exceções não identificadas, o tempo de execução do aplicativo pode ser encerrado. Se um aplicativo puder manipular vários tipos de exceção, ele será mais robusto e menos propenso a falhas.

Como o gerenciamento de exceções é vital para o desenvolvimento de aplicativos, rastreá-los e monitorá-los é significativo para a otimização do desempenho dos aplicativos. 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 na causa raiz de muitos problemas em potencial.

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

O que é uma exceção?

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, é gerada de onde o problema ocorreu; exceções são criadas como objetos no .NET Framework e são herdadas da classe base System.Exception. A exceção é passada até a pilha até que o aplicativo a manipule ou o programa termine.

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

Blocos try-catch-finally

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

Um aplicativo deve usar vários blocos catch para manipular diferentes tipos de exceções. A categorização de diferentes tipos de exceção fornece alguma visibilidade do tipo exato de um problema.

Como os instrumentos do Site24x7 bloqueiam try-catch-finally

O agente APM Insight .Net rastreia exceções capturadas por meio de provedores de registro (como log4net, NLog, Serilog e Enterprise Library) e mostra exceções lançadas 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 registro. Nos casos em que as exceções não são capturadas por provedores de registro, elas podem ser rastreadas usando a API do agente .NET. linha de código para os blocos de captura desejados: DotNetAgent.Api.CustomTracker.TraceError (exception);

Figura 1. Exemplo de código com blocos catch para vários tipos de exceção.

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

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

  • Nível de aplicação
  • Nível de página
  • Nível de código
    • Tratamento de erros em aplicativos de formulário da web
    • Tratamento de erros em aplicativos MVC

Manipulação de erro no nível do aplicativo

Erros padrão no nível do aplicativo podem ser manipulados 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 as exceções no nível do aplicativo adicionando o código da API ao evento Application_Error. A Figura 2 mostra um HttpUnHandledException sendo capturado e é mostrado sob os detalhes de rastreio da transação “ticketweb/movie/checkavailability”.

Manipulação de erro 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 que normalmente são renderizadas na página serão ocultadas, 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 no nível da página podem ser rastreadas usando a API do agente. O rastreio de pilha completo de uma exceção é mostrado sob os respectivos detalhes de rastreio de transação. Isso ajuda no rastreamento de onde uma determinada exceção é lançada.

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

Em aplicativos de formulário da web:

Quando uma exceção é lançada em aplicativos de formulário da Web, o common language runtime (CLR) procura o bloco catch correspondente para manipular essa exceção. Se o método que está sendo executado não contiver o bloco catch, o CLR subirá pela pilha de chamadas procurando o método que chamou o método atual.

Figura 4. Um método para manipular exceções no nível de código.

As exceções no nível de código são manipuladas por meio de registradores ou pela API do agente .NET. Em seguida, o APM Insight captura essas exceções, juntamente com a gravidade, a mensagem, o tipo e o rastreamento de pilha da exceção.

Em aplicativos MVC:

Nos aplicativos MVC, as exceções são tratadas no controlador ou no 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 manipuladas pelo atributo HandleError. As exceções serão redirecionadas para a página de visualização de erros e mostrarão suas respectivas transações e rastreamentos de pilha. O atributo HandleError pode ser implementado no controlador ou no nível de ação, conforme ilustrado.

O APM Insight rastreia essas exceções automaticamente, sem precisar de nenhum snippet de código adicional. Essas exceções serão mostradas na guia Exceções, junto com sua frequência.

Usando registradores personalizados para rastrear exceções

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

Figura 6. O código destacado mostra um exemplo de método de log customizado.

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.

Usando o APM Insight do Site24x7, essas exceções podem ser rastreadas adicionando uma linha de código dentro dos métodos de registro personalizados mencionados acima. Na Figura 6, as exceções SQL rastreadas por meio do criador de logs customizado serão mostradas acima das respectivas transações que são lançadas durante essa exceção SQL.

Em geral, o 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 do tempo fornece uma visão geral da frequência com que uma exceção é lançada, com base em seu nível de gravidade.

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

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

ACSoftware / Figo Software seu Distribuidor e Revenda ManageEngine no Brasil

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

Deixe uma resposta