Compartilhar via


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");
  }
}