<exception>
– definice Typedef
exception_ptr
Typ, který popisuje ukazatele na výjimku.
typedef unspecified exception_ptr;
Poznámky
Nezadaná interní třída, která se používá k implementaci exception_ptr
typu.
Pomocí objektu exception_ptr
můžete odkazovat na aktuální výjimku nebo instanci uživatelem zadané výjimky. V implementaci Microsoftu je výjimka reprezentována EXCEPTION_RECORD strukturou. Každý exception_ptr
objekt obsahuje referenční pole výjimky, které odkazuje na kopii EXCEPTION_RECORD
struktury, která představuje výjimku.
Když deklarujete proměnnou exception_ptr
, proměnná není přidružena k žádné výjimce. Tedy referenční pole výjimky je NULL. exception_ptr
Takový objekt se nazývá null exception_ptr.
current_exception
Pomocí funkce můžete make_exception_ptr
objektu přiřadit výjimkuexception_ptr
. Když přiřadíte výjimku proměnné exception_ptr
, odkaz na pole odkazu na výjimku proměnné odkazuje na kopii výjimky. Pokud není dostatek paměti ke zkopírování výjimky, odkazuje referenční pole výjimky na kopii std ::bad_alloc výjimka. current_exception
Pokud funkce make_exception_ptr
nemůže zkopírovat výjimku z jiného důvodu, volá terminate
funkci CRT, aby ukončila aktuální proces.
I přes jeho název exception_ptr
není objekt sám o sobě ukazatelem. Neposlouchá sémantiku ukazatele a nelze ji použít s operátory přístupu člena ukazatele ( ->
) nebo nepřímými operátory (*). Objekt exception_ptr
nemá žádné veřejné datové členy ani členské funkce.
Porovnání:
K porovnání dvou exception_ptr
objektů můžete použít operátory equal (==
) a not-equal (!=
). Operátory nerovnají binární hodnotu (bitový vzor) EXCEPTION_RECORD
struktur, které představují výjimky. Místo toho operátory porovnávají adresy v referenčním poli exception_ptr
výjimky objektů. V důsledku toho se hodnota null exception_ptr
a hodnota NULL porovnávají jako rovna.
terminate_handler
Typ popisuje ukazatel na funkci, která je vhodná pro použití jako .terminate_handler
typedef void (*terminate_handler)();
Poznámky
Typ, který popisuje ukazatele na funkci vhodný pro použití jako obslužná rutina ukončení.
Příklad
Příklad použití terminate_handler
najdete v set_terminate .
unexpected_handler
Typ popisuje ukazatel na funkci, která je vhodná pro použití jako .unexpected_handler
typedef void (*unexpected_handler)();
Příklad
Podívejte se na set_unexpected příklad použití unexpected_handler
.