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