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.