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