set_unexpected
(CRT)
Installiert eine eigene von unexpected
aufzurufende Beendigungsfunktion.
Syntax
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parameter
unexpFunction
Zeiger auf eine Funktion, die Sie schreiben, um die unexpected
-Funktion zu ersetzen.
Rückgabewert
Gibt einen Zeiger auf die vorherige Beendigungsfunktion zurück, die von _set_unexpected
registriert wurde, sodass die vorherige Funktion später wiederhergestellt werden kann. Wenn keine vorherige Funktion festgelegt wurde, kann der Rückgabewert verwendet werden, um das Standardverhalten wiederherzustellen. Dieser Wert kann sein NULL
.
Hinweise
Die set_unexpected
-Funktion installiert unexpFunction
als Funktion, die von unexpected
aufgerufen wird. unexpected
wird in der aktuellen C++-Ausnahmebehandlungsimplementierung nicht verwendet. Der unexpected_function
-Typ ist in EH.H als Zeiger auf eine benutzerdefinierte unerwartete Funktion, unexpFunction
, definiert, die void
zurückgibt. Ihre benutzerdefinierte unexpFunction
Funktion sollte nicht zum Aufrufer zurückkehren.
typedef void ( *unexpected_function )( );
Standardmäßig ruft unexpected
terminate
auf. Sie können das Standardverhalten ändern, indem Sie Ihre eigene Terminierungsfunktion schreiben und set_unexpected
mit dem Namen der Funktion als Argument aufrufen. Die unexpected
-Routine ruft immer die letzte Funktion auf, die für set_unexpected
als Argument angegeben wurde.
Anders als die benutzerdefinierte Funktion, die durch einen Aufruf an set_terminate
installiert wurde, kann aus unexpFunction
heraus eine Ausnahme ausgelöst werden.
In einer Multithreadumgebung werden unerwartete Funktionen für jeden Thread separat verwaltet. Jeder neue Thread muss eine eigene unerwartete Funktion installieren. Daher ist jeder Thread für die eigene unerwartete Behandlung verantwortlich.
In der aktuellen Microsoft-Implementierung der C++-Ausnahmebehandlung ruft unexpected
standardmäßig terminate
auf und wird nie von der Laufzeitbibliothek für die Ausnahmebehandlung aufgerufen. Es gibt keinen besonderen Vorteil für anrufe unexpected
statt terminate
.
Es gibt einen einzelnen set_unexpected
Handler für alle dynamisch verknüpften DLLs oder EXEs. Auch wenn Sie den Handler aufrufen set_unexpected
, wird möglicherweise durch einen anderen oder einen Handler ersetzt, der durch eine andere DLL oder EXE festgelegt wird.
Anforderungen
Routine | Erforderlicher Header |
---|---|
set_unexpected |
<eh.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Siehe auch
Ausnahmebehandlungsroutinen
abort
_get_unexpected
set_terminate
terminate
unexpected