set_unexpected
(CRT)
Instaluje własną funkcję kończenia, która ma być wywoływana przez unexpected
program .
Składnia
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parametry
unexpFunction
Wskaźnik do funkcji, którą zapisujesz, unexpected
aby zastąpić funkcję.
Wartość zwracana
Zwraca wskaźnik do poprzedniej funkcji zakończenia zarejestrowanej przez _set_unexpected
, aby można było przywrócić poprzednią funkcję później. Jeśli nie ustawiono żadnej poprzedniej funkcji, wartość zwracana może służyć do przywrócenia domyślnego zachowania; ta wartość może mieć wartość NULL
.
Uwagi
Funkcja set_unexpected
jest instalowana unexpFunction
jako funkcja wywoływana przez unexpected
funkcję . unexpected
nie jest używana w bieżącej implementacji obsługi wyjątków języka C++. Typ unexpected_function
jest zdefiniowany w EH. H jako wskaźnik do nieoczekiwanej funkcji zdefiniowanej przez użytkownika, unexpFunction
która zwraca wartość void
. Funkcja niestandardowa unexpFunction
nie powinna wrócić do elementu wywołującego.
typedef void ( *unexpected_function )( );
Domyślnie unexpected
wywołuje metodę terminate
. To domyślne zachowanie można zmienić, pisząc własną funkcję zakończenia i wywołując set_unexpected
przy użyciu nazwy funkcji jako argumentu. unexpected
wywołuje ostatnią funkcję podaną jako argument .set_unexpected
W przeciwieństwie do niestandardowej funkcji zakończenia zainstalowanej przez wywołanie metody set_terminate
, wyjątek można zgłosić z poziomu elementu unexpFunction
.
W środowisku wielowątkowym nieoczekiwane funkcje są obsługiwane oddzielnie dla każdego wątku. Każdy nowy wątek musi zainstalować własną nieoczekiwaną funkcję. W związku z tym każdy wątek jest odpowiedzialny za własną nieoczekiwaną obsługę.
W bieżącej implementacji firmy Microsoft obsługi unexpected
wyjątków języka C++ wywołania terminate
domyślnie i nigdy nie są wywoływane przez bibliotekę czasu wykonywania obsługi wyjątków. Nie ma konkretnej korzyści z wywoływania unexpected
, a nie terminate
.
Istnieje jedna set_unexpected
procedura obsługi dla wszystkich dynamicznie połączonych bibliotek DLL lub EXE. Nawet jeśli wywołasz set_unexpected
program obsługi, może zostać zastąpiony przez inną lub zastępującą procedurę obsługi ustawioną przez inną bibliotekę DLL lub EXE.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
set_unexpected |
<eh.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Procedury obsługi wyjątków
abort
_get_unexpected
set_terminate
terminate
unexpected