C6310
aviso C6310: A constante ilegal no filtro de exceção pode causar um comportamento inesperado
Essa mensagem indica que uma constante ilegal esteve detectada na expressão de filtro de um manipulador estruturado de exceção.Constantes definidas para uso na expressão de filtro de um manipulador estruturado de exceção são:
EXCEPTION_CONTINUE_EXECUTION
EXCEPTION_CONTINUE_SEARCH
EXCEPTION_EXECUTE_HANDLER
Esses valores são definidos no arquivo de cabeçalho excpt.h de tempo de execução.
Usar uma constante que não está na lista acima 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");
}
}