Поделиться через


Определения типов <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.