Partager via


Avertissement C6318

Mal définie __try/__except: utilisation de la constante EXCEPTION_CONTINUE_SEARCH ou d’une autre constante qui prend la valeur zéro dans l’expression de filtre d’exception. Le code du bloc du gestionnaire d’exceptions n’est pas exécuté

Notes

Cet avertissement indique que si une exception se produit dans le bloc protégé de ce gestionnaire d’exceptions structurées, l’exception ne sera 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 gestionnaire d’exceptions, car le bloc de gestionnaire n’est pas exécuté.

Nom de l’analyse du code : EXCEPTIONCONTINUESEARCH

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 C6318
  {
    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

try-except, instruction