set_unexpected
(CRT)
Nainstaluje vlastní funkci ukončení, kterou unexpected
má volat .
Syntaxe
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parametry
unexpFunction
Ukazatel na funkci, kterou napíšete, aby funkci nahradila unexpected
.
Vrácená hodnota
Vrátí ukazatel na předchozí ukončovací funkci registrovanou _set_unexpected
tak, aby předchozí funkce byla později obnovena. Pokud nebyla nastavena žádná předchozí funkce, může být vrácená hodnota použita k obnovení výchozího chování; tato hodnota může být NULL
.
Poznámky
Funkce set_unexpected
se nainstaluje unexpFunction
jako funkce volaná unexpected
funkcí . unexpected
v aktuální implementaci zpracování výjimek jazyka C++ se nepoužívá. Typ unexpected_function
je definován v EH. H jako ukazatel na uživatelem definovanou neočekávanou funkci, unexpFunction
která vrací void
. Vaše vlastní unexpFunction
funkce by se neměla vrátit do volajícího.
typedef void ( *unexpected_function )( );
Ve výchozím nastavení unexpected
volání terminate
. Toto výchozí chování můžete změnit tak, že jako argument napíšete vlastní funkci ukončení a zavoláte set_unexpected
s názvem funkce. unexpected
volá poslední funkci, která je uvedena jako argument .set_unexpected
Na rozdíl od vlastní funkce ukončení nainstalované voláním set_terminate
, může být výjimka vyvolán z .unexpFunction
V prostředí s více vlákny jsou pro každé vlákno udržovány neočekávané funkce samostatně. Každé nové vlákno musí nainstalovat vlastní neočekávanou funkci. Každé vlákno je tedy zpoplatněno vlastním neočekávaným zpracováním.
V aktuální implementaci zpracování unexpected
výjimek jazyka C++ microsoft volání terminate
ve výchozím nastavení a nikdy není volána knihovnou runtime zpracování výjimek. Neexistuje žádná zvláštní výhoda volání unexpected
místo terminate
.
Existuje jedna set_unexpected
obslužná rutina pro všechny dynamicky propojené knihovny DLL nebo exEs. I když voláte set_unexpected
obslužnou rutinu, může být nahrazena jinou obslužnou rutinou nebo že nahrazujete obslužnou rutinu nastavenou jinou knihovnou DLL nebo EXE.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
set_unexpected |
<eh.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Rutiny zpracování výjimek
abort
_get_unexpected
set_terminate
terminate
unexpected