Sdílet prostřednictvím


set_unexpected (CRT)

Nainstaluje vlastní funkci ukončení, kterou unexpectedmá 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á unexpectedfunkcí . 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. unexpectedvolá 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