C6320
Aviso C6320: expressão de filtro de exceção é EXCEPTION_EXECUTE_HANDLER constante.Isso pode mascarar exceções não foram se destina a ser tratado
Este aviso indica que o efeito colateral de usar EXCEPTION_EXECUTE_HANDLER constante no __except bloco.Nesse caso, a demonstrativo no __except bloco sempre será executado para lidar com a exceção, incluindo exceções, você não quiser manipular em uma função específica.É recomendável que você consulte 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 sistema autônomo mostra o 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 ...
}
}