Ostrzeżenie kompilatora (poziom 1) C4532
"kontynuuj": wyskocz z __finally/na koniec blok ma niezdefiniowane zachowanie podczas obsługi zakończenia
Uwagi
Kompilator napotkał jedno z następujących słów kluczowych:
powoduje wyskoczenie z __finally
bloku lub finally
podczas nieprawidłowego zakończenia.
Jeśli wystąpi wyjątek i gdy stos jest niezwiązany podczas wykonywania procedur obsługi zakończenia (__finally
bloki lub wreszcie), a kod wyskakuje z bloku przed __finally
zakończeniem __finally
bloku, zachowanie jest niezdefiniowane. Kontrolka może nie powrócić do kodu odwijania, więc wyjątek może nie być poprawnie obsługiwany.
Jeśli musisz wyskoczyć z __finally
bloku, najpierw sprawdź nieprawidłowe zakończenie.
Opcja kompilatora /sdl
(Włącz dodatkowe kontrole zabezpieczeń) podnosi to ostrzeżenie do błędu.
Przykład
Poniższy przykład generuje C4532; usuń lub oznacz instrukcje skoku jako komentarz, aby rozwiązać problemy z ostrzeżeniami.
// 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;
}
}
}