Condividi tramite


set_unexpected (CRT)

Installa una funzione di terminazione che deve essere chiamata da unexpected.

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

Parametri

  • unexpFunction
    Puntatore a una funzione si scrive per sostituire la funzione unexpected.

Valore restituito

Restituisce un puntatore alla funzione precedente di terminazione registrata da _set_unexpected, in modo che la funzione precedente possa essere ripristinata in un secondo momento. Se nessuna funzione precedente è stata impostata, il valore restituito può essere utilizzato per ripristinare il comportamento predefinito; questo valore può essere NULL.

Note

La funzione set_unexpected installa unexpFunction come funzione chiamata da unexpected. unexpected non è utilizzato nell'implementazione della gestione delle eccezioni C++ corrente. Il tipo unexpected_function è definito in EH.H come puntatore a una funzione unexpected definita dall'utente, unexpFunction che restituisce void. La funzione personalizzata di unexpFunction non deve restituire al relativo chiamante.

typedef void ( *unexpected_function )( );

Per impostazione predefinita, unexpected chiama terminate. È possibile modificare questo comportamento predefinito scrivendo una funzione di terminazione e chiamando set_unexpected con il nome della funzione come suo argomento. unexpected chiama l'ultima funzione fornita come argomento di set_unexpected.

A differenza della funzione personalizzata di chiusura installata da una chiamata a set_terminate, è possibile che venga generata un'eccezione da unexpFunction.

In un ambiente multithreading, le funzioni unexpected sono gestite separatamente per ogni thread. Ogni nuova thread necessita dell'installazione della propria funzione unexpected. Quindi, ogni thread è responsabile della gestione della propria gestione di unexpected.

Nell'implementazione Microsoft corrente di gestione delle eccezioni C++, unexpected chiama terminate per impostazione predefinita e non viene mai chiamato dalla libreria di runtime di gestione delle eccezioni. Non vi sono vantaggi particolari a chiamare unexpected anziché terminate.

Esiste un singolo gestore set_unexpected per tutti i file DLL o EXE collegati in modo dinamico; anche se si chiama set_unexpected, è possibile che il proprio gestore venga sostituito da un altro, oppure che sostituisca un gestore impostato da un altro file DLL o EXE.

Requisiti

Routine

Intestazione obbligatoria

set_unexpected

<eh.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Routine di gestione delle eccezioni

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)