typedef <exception>
exception_ptr
Ein Typ, der einen Zeiger auf eine Ausnahme beschreibt.
typedef unspecified exception_ptr;
Hinweise
Eine nicht angegebene interne Klasse, die verwendet wird, um den Typ exception_ptr
zu implementieren.
Verwenden Sie ein exception_ptr
-Objekt, um auf die aktuelle Ausnahme oder eine Instanz einer vom Benutzer angegebenen Ausnahme zu verweisen. In der Microsoft-Implementierung wird eine Ausnahme von einer EXCEPTION_RECORD-Struktur dargestellt. Jedes exception_ptr
-Objekt enthält ein Ausnahmeverweisfeld, das auf eine Kopie der EXCEPTION_RECORD
-Struktur zeigt, die die Ausnahme darstellt.
Wenn Sie eine exception_ptr
-Variable deklarieren, wird die Variable keiner Ausnahme zugeordnet. Das heißt, das Ausnahmeverweisfeld ist NULL. Ein solches exception_ptr
-Objekt wird als null exception_ptr bezeichnet.
Verwenden Sie die Funktion current_exception
oder make_exception_ptr
, um eine Ausnahme einem exception_ptr
-Objekt zuzuweisen. Wenn Sie einer exception_ptr
-Variable eine Ausnahme zuweisen, zeigt das Ausnahmeverweisfeld der Variable auf eine Kopie der Ausnahme. Ist nicht genügend Arbeitsspeicher zum Kopieren der Ausnahme vorhanden, zeigt das Ausnahmeverweisfeld auf eine Kopie einer std::bad_alloc-Ausnahme. Wenn die current_exception
make_exception_ptr
Ausnahme aus irgendeinem anderen Grund nicht kopiert werden kann, ruft die Funktion CRT die terminate
CRT-Funktion auf, um den aktuellen Prozess zu beenden.
Trotz seines Namens ist ein exception_ptr
-Objekt nicht selbst ein Zeiger. Es folgt keiner Zeigersemantik und kann nicht mit Zeigermemberzugriff (->
) oder Dereferenzierung (*)-Operatoren verwendet werden. Das exception_ptr
-Objekt weist keine öffentlichen Datenmember oder Memberfunktionen auf.
Vergleiche:
Sie können den Gleichheitsoperator (==
) und den Ungleichheitsoperator (!=
) verwenden, um zwei exception_ptr
-Objekte zu vergleichen. Die Operatoren vergleichen nicht den Binärwert (Bitmuster) der EXCEPTION_RECORD
-Strukturen, die die Ausnahmen darstellen. Stattdessen vergleichen die Operatoren die Adressen im Ausnahmeverweisfeld der exception_ptr
-Objekte. Folglich sind ein NULL-exception_ptr
und der NULL-Wert gleichwertig.
terminate_handler
Der Typ beschreibt einen Zeiger auf eine Funktion, die zur Verwendung als terminate_handler
geeignet ist.
typedef void (*terminate_handler)();
Hinweise
Der Typ beschreibt einen Zeiger auf eine Funktion, die zur Verwendung als terminate-Handler geeignet ist.
Beispiel
Ein Beispiel zur Verwendung von terminate_handler
finden Sie unter set_terminate.
unexpected_handler
Der Typ beschreibt einen Zeiger auf eine Funktion, die zur Verwendung als unexpected_handler
geeignet ist.
typedef void (*unexpected_handler)();
Beispiel
Ein Beispiel zur Verwendung von unexpected_handler
finden Sie unter set_unexpected.