Partilhar via


C6320

aviso C6320: expressão de filtro de exceção é a constante EXCEPTION_EXECUTE_HANDLER.Isso poderá mascarar exceções que não foram criadas para ser manipulado.

Este aviso indica que o efeito colateral de usar a constante EXCEPTION_EXECUTE_HANDLER no __except do bloco.Nesse caso, a instrução em que o __except bloquear será sempre executado para tratar a exceção, inclusive as exceções não quis tratar em uma função específica.É recomendável que você verifique a exceção antes de manuseá-lo.

Exemplo

O código a seguir gera este aviso porque o __except bloquear irá tentar manipular exceções de todos os tipos:

#include <stdio.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;  // might cause access violation exception
      // code ...
   } 
   __except(EXCEPTION_EXECUTE_HANDLER) // warning
   { 
      puts("in except"); 
      // code ...
   } 
} 

Para corrigir esse aviso, use GetExceptionCode para verificar se há uma exceção específica antes de manuseá-lo, conforme mostrado no código a seguir:

#include <stdio.h> 
#include <windows.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;    // might cause access violation exception 
      // code ...
   } 
   __except(GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
   { 
      puts("in except"); 
      // code ...
   } 
}

Consulte também

Referência

Tente-exceto instrução