Sdílet prostřednictvím


<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_handlernajdete 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.