Erreur du compilateur C2707
'identifier' : contexte incorrect pour la fonction intrinsèque
Les intrinsèques de gestion des exceptions structurées ne sont pas valides dans certains contextes :
_exception_code()
en dehors d’un filtre d’exception ou__except
d’un bloc_exception_info()
en dehors d’un filtre d’exception_abnormal_termination()
en dehors d’un__finally
bloc
Pour résoudre l’erreur, assurez-vous que les intrinsèques de gestion des exceptions sont placées dans le contexte approprié.
Exemple
L’exemple suivant génère l’erreur C2707.
// C2707.cpp
#include <windows.h>
#include <stdio.h>
LONG MyFilter(LONG excode)
{
return (excode == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH); // OK
}
LONG func(void)
{
int x, y;
return(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? // C2707
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);
__try
{
y = 0;
x = 4 / y;
return 0;
}
__except(MyFilter(GetExceptionCode()))
{
return(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? // ok
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);
}
}
int main()
{
__try
{
func();
} __except(EXCEPTION_EXECUTE_HANDLER)
{
printf_s("Caught exception\n");
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour