Advertencia C6310

La constante no válida en el filtro de excepciones puede provocar un comportamiento inesperado

Comentarios

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.

El uso de una constante que no está en la lista anterior puede provocar un comportamiento inesperado.

Nombre del análisis de código: ILLEGALEXCEPTEXPRCONST

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