Partager via


Avertissement C6310

Une constante illégale dans le filtre d’exceptions peut entraîner un comportement inattendu

Notes

Ce message indique qu’une constante illégale a été détectée dans l’expression de filtre d’un gestionnaire d’exceptions structurées. Les constantes définies pour être utilisées dans l’expression de filtre d’un gestionnaire d’exceptions structurées sont les suivantes :

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

Ces valeurs sont définies dans le fichier d’en-tête d’exécution excpt.h.

L’utilisation d’une constante qui n’est pas dans la liste précédente peut entraîner un comportement inattendu.

Nom de l’analyse du code : ILLEGALEXCEPTEXPRCONST

Exemple

Le code suivant génère cet avertissement :

#include <excpt.h>
#include <stdio.h>
#include <windows.h>

BOOL LimitExceeded();

void fd( )
{
  __try
  {
    if (LimitExceeded())
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code
    }
  }
  __except (EXCEPTION_ACCESS_VIOLATION)
  {
    puts("Exception Occurred");
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <excpt.h>
#include <stdio.h>
#include <windows.h>

BOOL LimitExceeded();

void fd( )
{
  __try
  {
    if (LimitExceeded())
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code
    }
  }
  __except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ?
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
  {
    puts("Exception Occurred");
  }
}