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