C6310
Aviso C6310: constante ilegal no filtro de exceção pode causar um comportamento inesperado
Esta mensagem indica que uma constante inválida foi detectada na expressão do filtro de um manipulador de exceção estruturada. Constantes definidas para uso na expressão do filtro de um manipulador de exceção estruturada são:
EXCEPTION_CONTINUE_EXECUTION
EXCEPTION_CONTINUE_SEARCH
EXCEPTION_EXECUTE_HANDLER
Esses valores são definidos no excpt.h de arquivo de cabeçalho de tempo de execução.
Utilizando uma constante que não esteja na lista anterior pode causar um comportamento inesperado.
Exemplo
O código a seguir gera este aviso:
#include <excpt.h>
#include <stdio.h>
#include <windows.h>
BOOL LimitExceeded();
void fd( )
{
__try
{
if (LimitExceeded())
{
RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
}
else
{
// code
}
}
__except (EXCEPTION_ACCESS_VIOLATION)
{
puts("Exception Occurred");
}
}
Para corrigir esse aviso, use o seguinte código:
#include <excpt.h>
#include <stdio.h>
#include <windows.h>
BOOL LimitExceeded();
void fd( )
{
__try
{
if (LimitExceeded())
{
RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
}
else
{
// code
}
}
__except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
puts("Exception Occurred");
}
}