DA0007: Evite usar exceções para o fluxo de controle
Identificação da regra |
DA0007 |
<strong>Categoria</strong> |
.Uso do NET Framework |
Métodos de criação de perfil |
Todos |
Message (Mensagem) |
Um alto número de exceções consistentemente está sendo lançado. Considere a redução do uso de exceções na lógica do programa. |
Tipo de mensagem |
Aviso |
Quando você cria o perfil usando a amostragem.NET métodos de contenção de memória ou recursos, você deve coletar amostras de pelo menos 25 para disparar esta regra.
Causa
Uma alta taxa de.Manipuladores de exceção do NET Framework eram chamados nos dados de criação de perfil. Considere usar outra lógica de fluxo de controle para reduzir o número de exceções que são lançados.
Descrição da regra
Enquanto o uso de manipuladores de exceção para capturar erros e outros eventos que interrompem a execução do programa é uma boa prática, o uso do manipulador de exceção como parte da lógica de execução do programa regular pode ser caro e deve ser evitado. Na maioria dos casos, as exceções devem ser usadas somente para circunstâncias em que ocorrem raramente e não são esperadas.. Exceções não devem ser usadas para retornar os valores como parte do fluxo normal do programa. Em muitos casos, você pode evitar disparar exceções Validando a valores e usando a lógica condicional para suspender a execução de instruções que causam o problema.
Para obter mais informações, consulte o O gerenciamento de exceção seção Chapter 5 — Improving Managed Code Performance na Improving .NET Application Performance and Scalability o volume da Microsoft Patterns and Practices biblioteca MSDN.
Como investigar um aviso.
Clique duas vezes a mensagem na janela Error List para navegar para o modo de exibição de marcas. Localize a coluna que contém o .NET Exceptions(@ProcessInstance) de CLR \ n º de exceções iniciadas / s medidas. Determine se existem fases específicas da execução do programa onde a manipulação de exceção é mais freqüente do que outras pessoas. Usando um perfil de amostragem, tente identificar instruções de throw e try/catch blocos que geram exceções freqüentes. Se necessário, adicione a lógica de catch para ajudá-lo a compreender quais exceções estão sendo manipuladas com mais freqüência. Sempre que possível, instruções de throw substituir executada com freqüência ou os blocos catch com fluxo simple lógica ou validação de código de controle.
Por exemplo, se você achar que seu aplicativo foi tratamento de exceções de DivideByZeroException freqüentes, adicionando lógica de seu programa para verificar se há denominadores com valores zero melhorará o desempenho do aplicativo.