C6318
avertissement C6318 : __try/__except mal défini : utilisation de la constante EXCEPTION_CONTINUE_SEARCH ou d'une autre constante égale à zéro dans l'expression de filtre d'exception. Le code dans le bloc de gestion d'exceptions n'est pas exécuté
Cet avertissement indique que si une exception est levée dans le bloc protégé de ce gestionnaire d'exceptions structuré, l'exception n'est pas gérée car la constante EXCECPTION_CONTINUE_SEARCH est utilisée dans l'expression de filtre d'exception.
Ce code équivaut au bloc protégé sans le bloc de gestion d'exceptions car ce dernier n'est pas exécuté.
Exemple
Le code suivant génère cet avertissement :
#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");
}
}
Pour corriger cet avertissement, utilisez le code suivant :
#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");
}
}