Udostępnij za pośrednictwem


set_unexpected (CRT)

Instaluje własną funkcję kończenia, która ma być wywoływana przez unexpectedprogram .

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 unexpectedfunkcję . 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. unexpectedwywoł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