Определения типов <exception>
exception_ptr
Тип, который описывает указатель на исключение.
typedef unspecified exception_ptr;
Замечания
Неуказанный внутренний класс, используемый для реализации типа exception_ptr
.
Используйте объект exception_ptr
для ссылки на текущее исключение или экземпляр указанного пользователем исключения. В реализации Майкрософт исключение представлено структурой EXCEPTION_RECORD. Каждый объект exception_ptr
содержит поле ссылки на исключение, указывающее на копию структуры EXCEPTION_RECORD
, представляющую исключение.
При объявлении переменной exception_ptr
эта переменная не связана ни с одним исключением. То есть в поле ссылки на исключение находится значение NULL. Такой объект exception_ptr
называется exception_ptr null.
Используйте функцию current_exception
или make_exception_ptr
для назначения исключения объекту exception_ptr
. При назначении исключения переменной exception_ptr
поле ссылки на исключение переменной указывает на копию исключения. При нехватке памяти для копирования исключения поле ссылки на исключение указывает на копию исключения std::bad_alloc. current_exception
Если функция не make_exception_ptr
может скопировать исключение по какой-либо другой причине, функция вызывает terminate
функцию CRT для выхода из текущего процесса.
Несмотря на свое имя, объект exception_ptr
не является указателем. Он не повинуется семантике указателя и не может использоваться с операторами доступа к членам указателей (->
) или косвенного обращения (*). Объект exception_ptr
не имеет открытых данных-членов и функций-членов.
Сравнения:
Можно использовать операторы равенства (==
) и неравенства (!=
) для сравнения двух объектов exception_ptr
. Эти операторы не сравнивают бинарное значение (битовый шаблон) структур EXCEPTION_RECORD
, которые представляют исключения. Вместо этого операторы сравнивают адреса в поле ссылки на исключение объектов exception_ptr
. Поэтому exception_ptr
со значением null и значение NULL при сравнении считаются равными.
terminate_handler
Тип, который описывает указатель на функцию, подходящую для использования в качестве terminate_handler
.
typedef void (*terminate_handler)();
Замечания
Тип, который описывает указатель на функцию, подходящую для использования в качестве обработчика завершения.
Пример
См. set_terminate, чтобы ознакомиться с примером использования terminate_handler
.
unexpected_handler
Тип, который описывает указатель на функцию, подходящую для использования в качестве unexpected_handler
.
typedef void (*unexpected_handler)();
Пример
См. set_unexpected в качестве примера использования unexpected_handler
.