set_unexpected
(CRT)
Installa la funzione di terminazione personalizzata che deve essere chiamata da unexpected
.
Sintassi
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parametri
unexpFunction
Puntatore a una funzione personalizzata per sostituire la funzione unexpected
.
Valore restituito
Restituisce un puntatore alla funzione di terminazione precedente registrata da _set_unexpected
, in modo che la funzione precedente possa essere ripristinata in un secondo momento. Se non è stata impostata alcuna funzione precedente, è possibile usare il valore restituito per ripristinare il comportamento predefinito; questo valore può essere NULL
.
Osservazioni:
La funzione set_unexpected
installa unexpFunction
come funzione chiamata da unexpected
. unexpected
non viene usato nell'implementazione corrente della gestione delle eccezioni C++. Il tipo unexpected_function
è definito in EH.H come puntatore a una funzione unexpected definita dall'utente, unexpFunction
che restituisce void
. La funzione personalizzata unexpFunction
non deve tornare al chiamante.
typedef void ( *unexpected_function )( );
unexpected
chiama terminate
per impostazione predefinita. È possibile modificare questo comportamento predefinito scrivendo una funzione di terminazione personalizzata e chiamando set_unexpected
con il nome della funzione come argomento. unexpected
chiama l'ultima funzione fornita come argomento a set_unexpected
.
Diversamente dalla funzione di terminazione personalizzata installata da una chiamata a set_terminate
, un'eccezione può essere generata dall'interno di unexpFunction
.
In un ambiente multithreading, le funzioni unexpected vengono mantenute separatamente per ogni thread. Ogni nuovo thread richiede l'installazione della propria funzione unexpected. Quindi, ogni thread è responsabile della propria gestione degli eventi imprevisti.
Nell'implementazione corrente di Microsoft di gestione delle eccezioni C++, unexpected
chiama terminate
per impostazione predefinita e non viene mai chiamata dalla libreria di runtime di gestione delle eccezioni. Non esiste alcun vantaggio particolare per chiamare unexpected
anziché terminate
.
Esiste un singolo set_unexpected
gestore per tutte le DLL o exes collegate dinamicamente; anche se si chiama set_unexpected
il gestore può essere sostituito da un altro gestore o che si sta sostituendo un gestore impostato da un'altra DLL o EXE.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
set_unexpected |
<eh.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Vedi anche
Routine di gestione delle eccezioni
abort
_get_unexpected
set_terminate
terminate
unexpected