Compilerwarnung (Ebene 1) C4532
"continue" : Springen aus __finally/schließlich block hat nicht definiertes Verhalten während der Beendigungsbehandlung
Hinweise
Der Compiler hat eines der folgenden Schlüsselwörter gefunden:
verursacht einen Sprung aus einem oder finally
einem Block während einer __finally
abnormalen Beendigung.
Wenn eine Ausnahme auftritt und während der Stapel während der Ausführung der Beendigungshandler (die __finally
oder schließlich Blöcke) entwundet wird und der Code vor dem Ende des __finally
Blocks aus einem __finally
Block springt, wird das Verhalten nicht definiert. Die Steuerung kehrt möglicherweise nicht zum abwickelnden Code zurück, sodass die Ausnahme möglicherweise nicht ordnungsgemäß behandelt wird.
Wenn Sie aus einem Block herausspringen müssen, suchen Sie zuerst nach einer __finally
abnormen Beendigung.
Die Compileroption /sdl
(Zusätzliche Sicherheitsüberprüfungen aktivieren) stuft diese Warnung auf einen Fehler hoch.
Beispiel
Im folgenden Beispiel wird C4532 generiert; Löschen oder kommentieren Sie die Sprunganweisungen aus, um die Warnungen zu beheben.
// 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;
}
}
}