C6318

Mise à jour : novembre 2007

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

Voir aussi

Référence

try-except Statement