Advertencia C6318

Definido __try/__exceptpor error: uso de la constante EXCEPTION_CONTINUE_SEARCH u otra constante que se evalúa como cero en la expresión de filtro de excepciones. El código del bloque del controlador de excepciones no se ejecuta

Comentarios

Esta advertencia indica que si se produce una excepción en el bloque protegido de este controlador de excepciones estructurado, la excepción no se controlará porque la constante EXCECPTION_CONTINUE_SEARCH se usa en la expresión de filtro de excepciones.

Este código es equivalente al bloque protegido sin el bloque de controlador de excepciones porque no se ejecuta el bloque de controlador.

Nombre del análisis de código: EXCEPTIONCONTINUESEARCH

Ejemplo

El código siguiente genera esta advertencia:

#include <excpt.h>
#include <stdio.h>

void f (char *pch)
{
  __try
  {
    // assignment might fail
    *pch = 0;
  }
  __except (EXCEPTION_CONTINUE_SEARCH) // warning C6318
  {
    puts("Exception Occurred");
  }
}

Para corregir esta advertencia, utilice el código siguiente:

#include <excpt.h>
#include <stdio.h>
#include <windows.h>

void f (char *pch)
{
  __try
  {
    // assignment might fail
    *pch = 0;
  }
  __except( (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) ?
                EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH )
  {
    puts("Access violation");
  }
}

Consulte también

try-except (Instrucción)