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