C6310
Avertissement C6310 : une constante non autorisée dans le filtre d'exception peut provoquer un comportement inattendu
Ce message indique qu'une constante non autorisée a été détectée dans l'expression de filtre d'un gestionnaire d'exceptions structuré. Les constantes définies pour être utilisées dans l'expression de filtre d'un gestionnaire d'exceptions structuré sont :
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 ne figure pas dans la liste précédente peut provoquer un comportement inattendu.
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");
}
}