DA0007: Evitar o uso de exceções para o fluxo de controle
Identificação da regra |
DA0007 |
<strong>Categoria</strong> |
.NET Framework uso |
Métodos de criação de perfil |
Todos |
Message (Mensagem) |
Um alto número de exceções consistentemente está sendo lançado.Considere a possibilidade de 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.Eram chamados de manipuladores de exceção do NET Framework nos dados de criação de perfil.Considere usar outra lógica do 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 que ocorrem raramente e não são esperadas..Exceções não devem ser usadas para retornar valores como parte do fluxo normal do programa.Em muitos casos, você pode evitar gerar exceções Validando 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 Gerenciamento de exceções seção de Chapter 5 — Improving Managed Code Performance na Improving .NET Application Performance and Scalability volume da Microsoft Patterns and Practices biblioteca no 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 as medidas.Determine se existem fases específicas da execução do programa em que a manipulação de exceção é mais freqüente do que outras pessoas.Usando um perfil de amostragem, tente identificar instruções throw e try/catch blocos que geram exceções freqüentes.Se necessário, adicione a lógica para detectar os blocos para ajudá-lo a entender 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 blocos catch com fluxo simple lógica ou validação de código de controle.
Por exemplo, se você descobrir 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 irá melhorar o desempenho do aplicativo.