Freigeben über


Compilerwarnung (Stufe 1) C4532

'continue': Aussprung aus __finally/finally-Block weist ein undefiniertes Verhalten während der Abbruchbehandlung auf

Der Compiler hat eines der folgenden Schlüsselwörter gefunden:

Diese Schlüsselwörter verursachen bei einer vorzeitigen Beendigung einen Sprung aus einem __finally- oder finally-Block.

Wenn eine Ausnahme auftritt, während der Stapel bei Ausführung des Beendigungshandlers (des __finally- oder finally-Blockes) entladen wird, und der Code vor Ende des __finally-Blockes aus dem __finally-Block herausspringt, ist das Verhalten nicht definiert. Die Steuerung geht möglicherweise nicht an den entladenen Code zurück, sodass die Ausnahme u. U. nicht ordnungsgemäß verarbeitet wird.

Wenn Sie aus einem __finally-Block herausspringen müssen, sollten Sie zuerst prüfen, ob eine vorzeitige Beendigung vorliegt.

Im folgenden Beispiel wird C4532 generiert. Um die Warnungen zu vermeiden, kommentieren Sie die Sprunganweisungen einfach aus.

// 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;
      }
   }
}