Partager via


Avertissement du compilateur (niveau 1) C4532

'continue' : le blocage de __finally/enfin n’a pas de comportement défini lors de la gestion de l’arrêt

Notes

Le compilateur a rencontré l’un des mots clés suivants :

à l’origine d’un saut hors d’un ou finally d’un __finally bloc lors d’un arrêt anormal.

Si une exception se produit et que la pile est déwound pendant l’exécution des gestionnaires d’arrêt (les __finally blocs ou les blocs) et que votre code sort d’un __finally bloc avant la fin du __finally bloc, le comportement n’est pas défini. Le contrôle peut ne pas revenir au code de déroulement. L’exception peut donc ne pas être gérée correctement.

Si vous devez sauter d’un __finally bloc, vérifiez d’abord l’arrêt anormal.

L’option /sdl (Activer des vérifications de sécurité supplémentaires) l’option du compilateur élève cet avertissement à une erreur.

Exemple

L’exemple suivant génère l’erreur C4532 ; supprimez ou commentez les instructions de saut pour résoudre les avertissements.

// C4532.cpp
// compile with: /W1
// C4532 expected
int main() {
   int i;
   for (i = 0; i < 10; i++) {
      __try {
      } __finally {
         // Delete the following line to resolve.
         continue;
      }

      __try {
      } __finally {
         // Delete the following line to resolve.
         break;
      }
   }
}