Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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