Condividi tramite


Macro AnomaloTermination

Indica se il blocco __try di un gestore di terminazione terminato normalmente. La funzione può essere chiamata solo dall'interno del blocco __finally di un gestore di terminazione.

Nota

L'ottimizzazione del compilatore Microsoft C/C++ interpreta questa funzione come parola chiave e il relativo uso all'esterno della sintassi di gestione delle eccezioni appropriata genera un errore del compilatore.

Sintassi

BOOL AbnormalTermination(void);

Parametri

Questa macro non ha parametri.

Valore restituito

Se il blocco di __try termina in modo anomalo, il valore restituito è diverso da zero.

Se il blocco __try terminato normalmente, il valore restituito è zero.

Commenti

Il blocco __try termina normalmente solo se l'esecuzione lascia il blocco in sequenza dopo l'esecuzione dell'ultima istruzione nel blocco. Istruzioni (ad esempio restituite, goto, continua o interruzione) che causano l'esecuzione di lasciare il blocco __try causano una terminazione anomala del blocco. Questo è il caso anche se tale istruzione è l'ultima istruzione nel blocco __try .

La terminazione anomala di un blocco __try causa la ricerca indietro del sistema attraverso tutti i frame dello stack per determinare se è necessario chiamare i gestori di terminazione. Ciò può comportare l'esecuzione di centinaia di istruzioni, quindi è importante evitare la terminazione anomala di un blocco __try a causa di un'istruzione restituita, goto, continua o interruzione . Si noti che queste istruzioni non generano un'eccezione, anche se la terminazione è anomala.

Per evitare la terminazione anomala, l'esecuzione deve continuare alla fine del blocco. È anche possibile eseguire l'istruzione __leave . L'istruzione __leave consente la terminazione immediata del blocco __try senza causare la terminazione anomala e la relativa penalità per le prestazioni. Controllare la documentazione del compilatore per determinare se l'istruzione __leave è supportata.

Requisiti

Requisito Valore
Client minimo supportato
Windows XP [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]

Vedi anche

Funzioni di gestione delle eccezioni strutturate

Panoramica della gestione delle eccezioni strutturate