C6318
aviso C6318: __try / __except mal definido: o uso da constante EXCEPTION_CONTINUE_SEARCH ou outra constante que é avaliada como zero na expressão do filtro de exceção.O código no bloco de manipulador de exceção não é executado
Esse aviso que indica se ocorrer uma exceção no bloco protegido do manipulador estruturado de exceção, a exceção não será tratada como a constante EXCECPTION_CONTINUE_SEARCH é usada na expressão de filtro de exceção.
Esse código é equivalente ao bloco protegido sem o bloco do manipulador de exceção porque o bloco do manipulador não é executado.
Exemplo
O código a seguir gera este aviso:
#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 corrigir esse aviso, use o seguinte código:
#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");
}
}