Compartir a través de


C6318

Advertencia C6318: __try/__except definido incorrecto: uso de la constante EXCEPTION_CONTINUE_SEARCH u otra que evalúe en cero la expresión de filtro de excepciones.No se ejecutará el código en el bloque del controlador de excepciones

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 se utiliza la constante EXCECPTION_CONTINUE_SEARCH en la expresión de filtro de excepciones.

Este código es equivalente al bloque protegido sin el bloque de controlador de excepciones, porque éste último no se ejecuta.

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

Vea también

Referencia

try-except (Instrucción)