Partager via


Avertissement du compilateur (niveau 1) C4532

'continue' : le saut hors du bloc __finally/finally a un comportement indéfini lors de la gestion du bloc de fin

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

ce qui a causé un saut en dehors d'un bloc __finally ou finally lors d'un arrêt anormal.

Si une exception survient, et tant que la pile n'est pas vidée lors de l'exécution des gestionnaires de terminaisons (les blocs __finally ou finally), si votre code effectue un saut en dehors d'un bloc __finally avant la fin de ce bloc __finally, le comportement n'est pas défini. Le contrôle peut ne jamais revenir au code de vidage, donc l'exception peut ne pas être gérée correctement.

Si vous devez utiliser un saut en dehors d'un bloc __finally , contrôlez d'abord un arrêt anormal.

L'exemple ci-dessous génère C4532 ; il suffit de mettre en commentaire 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;
      }
   }
}