Freigeben über


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-Funktion oder die make_exception_ptr-Funktion die Ausnahme aus einen anderen Grund nicht kopieren kann, ruft die Funktion die terminate (CRT)-Funktion zum Beenden des aktuellen Prozesses auf.

Trotz seines Namens ist ein exception_ptr-Objekt nicht selbst ein Zeiger. Es folgt keiner Zeigersemantik und kann nicht mit dem Zeigermemberzugriff (->) oder indirection (*)-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.

Siehe auch

Referenz

<exception>

Transportieren von Ausnahmen zwischen Threads