Condividi tramite


Avviso del compilatore (livello 1) C4532

'continue': il passaggio dal blocco __finally/finally ha un comportamento indefinito durante la gestione della terminazione

Osservazioni:

Il compilatore ha rilevato una delle parole chiave seguenti:

causando un salto da un blocco o finally durante la __finally terminazione anomala.

Se si verifica un'eccezione e mentre lo stack viene scollegato durante l'esecuzione dei gestori di terminazione (blocchi __finally o infine) e il codice si sposta all'esterno di un __finally blocco prima del termine del __finally blocco, il comportamento non è definito. Il controllo potrebbe non tornare al codice di rimozione, pertanto l'eccezione potrebbe non essere gestita correttamente.

Se è necessario uscire da un __finally blocco, verificare prima la terminazione anomala.

L'opzione del /sdl compilatore (Abilita controlli di sicurezza aggiuntivi) eleva questo avviso a un errore.

Esempio

L'esempio seguente genera l'errore C4532; eliminare o impostare come commento le istruzioni jump per risolvere gli avvisi.

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