Udostępnij za pośrednictwem


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