set_unexpected (CRT)
Installiert besitzen die von unexpectedFunktion, die aufgerufen werden soll Kündigungs.
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 vorhergehende Kündigungs für Reservierungen zurück, die von _set_unexpected registriert ist, sodass die vorherige Funktion später wiederhergestellt werden kann.Wenn keine vorherige Funktion festgelegt wurde, ist der Rückgabewert verwendet werden, um das Standardverhalten wiederherzustellen. Dieser Wert kann NULL sein.
Hinweise
Die set_unexpected-Funktion installiert unexpFunction als die Funktion, die von unexpectedaufgerufen wird.unexpected wird nicht in der aktuellen Implementierung der C++-Ausnahmebehandlungs verwendet.Der unexpected_function-Typ wird in EH.H als Zeiger auf eine benutzerdefinierte Funktion unerwartete unexpFunction definiert, die voidzurückgibt.Die benutzerdefinierte unexpFunction-Funktion sollte nicht auf seinen Aufrufer zurückkehren.
typedef void ( *unexpected_function )( );
Standardmäßig unexpected Aufrufe terminate.Sie können dieses Standardverhalten ändern, indem Sie das Feature für Kündigungs, Schreiben und set_unexpected mit dem Namen der Funktion als Argument besitzen aufrufen.unexpected ruft die letzte Funktion als Argument angegeben set_unexpected.
Anders als die benutzerdefinierte Funktion Kündigungs, die durch einen Aufruf von set_terminateinstalliert ist, kann eine Ausnahme aus unexpFunctionausgelöst werden.
In einer Multithreadumgebung werden unerwartete Funktionen separat für jeden Thread verwaltet.Jeder neue Thread muss über eine eigene unerwartete Funktion installieren.Daher ist jeder Thread verantwortlich für die eigene unerwartete Behandlung.
In der aktuellen Microsoft-Implementierung der C++-Ausnahmebehandlung unexpected ruft beim Behandeln terminate nie an und wird standardmäßig von der Ausnahmebehandlung laufzeitbibliothek aufgerufen.Es gibt keine besonderen Vorteil dem Aufruf von unexpected statt terminate.
Es wird ein einzelner set_unexpected-Handler für alle dynamisch verknüpfte DLLs und EXEs. Auch wenn Sie set_unexpected aufrufen, wird der Handler durch andere ersetzt oder das ersetzen Sie einen Handler, der durch ein anderes DLL- oder EXE-Datei festgelegt ist.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
set_unexpected |
<eh.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.