set_terminate (CRT)

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

Składnia

terminate_function set_terminate( terminate_function termFunction );

Parametry

termFunction
Wskaźnik do funkcji zakończenia, którą piszesz.

Wartość zwracana

Zwraca wskaźnik do poprzedniej funkcji zarejestrowanej przez set_terminate , 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_terminate jest instalowana termFunction jako funkcja wywoływana przez terminatefunkcję . set_terminate jest używany z obsługą wyjątków języka C++ i może być wywoływany w dowolnym momencie w programie przed zgłoszeniem wyjątku. terminate domyślnie wywołuje abort . Tę wartość domyślną można zmienić, pisząc własną funkcję zakończenia i wywołując set_terminate przy użyciu nazwy funkcji jako argumentu. terminatewywołuje ostatnią funkcję podaną jako argument .set_terminate Po wykonaniu żądanych zadań termFunction oczyszczania program powinien zakończyć działanie programu. Jeśli nie zostanie zakończona (jeśli powróci do elementu wywołującego), abort zostanie wywołana.

W środowisku wielowątkowym funkcje zakończenia są obsługiwane oddzielnie dla każdego wątku. Każdy nowy wątek musi zainstalować własną funkcję zakończenia. W związku z tym każdy wątek jest odpowiedzialny za własną obsługę kończenia.

Typ terminate_function jest zdefiniowany w EH. H jako wskaźnik do funkcji zakończenia zdefiniowanej przez użytkownika, termFunction która zwraca wartość void. Funkcja termFunction niestandardowa nie może przyjmować żadnych argumentów i nie powinna zwracać się do elementu wywołującego. Jeśli tak się dzieje, abort jest wywoływana. Wyjątek może nie zostać zgłoszony z poziomu elementu termFunction.

typedef void ( *terminate_function )( );

Uwaga

Funkcja set_terminate działa tylko poza debugerem.

Istnieje jedna set_terminate procedura obsługi dla wszystkich dynamicznie połączonych bibliotek DLL lub EXE. Nawet jeśli wywołasz set_terminate program obsługi, może zostać zastąpiony przez inną lub można zastąpić program obsługi ustawiony przez inną bibliotekę DLL lub EXE.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
set_terminate <eh.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

Zobacz przykład dla elementu terminate.

Zobacz też

Procedury obsługi wyjątków
abort
_get_terminate
set_unexpected
terminate
unexpected