Compartir a través de


C6310

Actualización: noviembre 2007

C6310

Advertencia C6310: Una constante no válida en el filtro de excepción puede provocar un comportamiento inesperado

Este mensaje indica que se detectó una constante no válida en la expresión de filtro de un controlador de excepciones estructurado. Las constantes definidas para su uso en la expresión de filtro de un controlador de excepciones estructurado son:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

Estos valores se definen en el archivo de encabezado en tiempo de ejecución excpt.h.

Utilizar una constante que no se encuentre en la lista anterior puede producir un comportamiento inesperado.

Ejemplo

El código siguiente genera esta advertencia:

#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 corregir esta advertencia, utilice el código siguiente:

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