Avertissement C6310
Une constante illégale dans le filtre d’exceptions peut entraîner un comportement inattendu
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
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");
}
}