<exception>
, definicje typów
exception_ptr
Typ, który opisuje wskaźnik do wyjątku.
typedef unspecified exception_ptr;
Uwagi
Nieokreślona klasa wewnętrzna używana do implementowania exception_ptr
typu.
exception_ptr
Użyj obiektu, aby odwołać się do bieżącego wyjątku lub wystąpienia wyjątku określonego przez użytkownika. W implementacji firmy Microsoft wyjątek jest reprezentowany przez strukturę EXCEPTION_RECORD . Każdy exception_ptr
obiekt zawiera pole odwołania wyjątku EXCEPTION_RECORD
wskazujące kopię struktury reprezentującej wyjątek.
Podczas deklarowania zmiennej zmienna exception_ptr
nie jest skojarzona z żadnym wyjątkiem. To znaczy, że pole odwołania wyjątku ma wartość NULL. exception_ptr
Taki obiekt jest nazywany exception_ptr o wartości null.
current_exception
Użyj funkcji ormake_exception_ptr
, aby przypisać wyjątek do exception_ptr
obiektu. Po przypisaniu wyjątku do exception_ptr
zmiennej pole odwołania wyjątku zmiennej wskazuje kopię wyjątku. Jeśli nie ma wystarczającej ilości pamięci do skopiowania wyjątku, pole odwołania wyjątku wskazuje kopię wyjątku std::bad_alloc . current_exception
Jeśli funkcja or make_exception_ptr
nie może skopiować wyjątku z innego powodu, funkcja wywołuje terminate
funkcję CRT, aby zakończyć bieżący proces.
Pomimo nazwy exception_ptr
obiekt nie jest wskaźnikiem. Nie jest on przestrzegany semantyki wskaźnika i nie może być używany z dostępem do elementu członkowskiego wskaźnika ( ->
) lub pośrednim (*) operatorami. Obiekt exception_ptr
nie ma publicznych składowych danych ani funkcji składowych.
Porównania:
Aby porównać dwa exception_ptr
obiekty, można użyć operatorów równości ( ==
) i nie równa się ( !=
). Operatory nie porównują wartości binarnej (wzorca bitowego EXCEPTION_RECORD
) struktur reprezentujących wyjątki. Zamiast tego operatory porównują adresy w polu odwołania do wyjątków exception_ptr
obiektów. W związku z tym wartość null exception_ptr
i wartość NULL są porównywane jako równe.
terminate_handler
Typ opisuje wskaźnik do funkcji odpowiedniej do użycia jako terminate_handler
.
typedef void (*terminate_handler)();
Uwagi
Typ opisuje wskaźnik do funkcji odpowiedni do użytku jako program obsługi zakończenia.
Przykład
Zobacz set_terminate , aby zapoznać się z przykładem użycia elementu terminate_handler
.
unexpected_handler
Typ opisuje wskaźnik do funkcji odpowiedniej do użycia jako unexpected_handler
.
typedef void (*unexpected_handler)();
Przykład
Zobacz set_unexpected , aby zapoznać się z przykładem użycia elementu unexpected_handler
.