std::unexpected_handler
Определено в заголовочном файле <exception>
|
||
typedef void (*unexpected_handler)(); |
(устарело в C++11) (удалено в C++17) |
|
std::unexpected_handler
это тип указа��еля на функцию (указатель на функцию, которая не принимает аргументов и возвращает void), который устанавливается и запрашивается функциями std::set_unexpected и std::get_unexpected и вызывается std::unexpected.
Реализация C++ предоставляет функцию по умолчанию std::unexpected_handler
, которая вызывает std::terminate(). Если установлено значение нулевого указателя (посредством std::set_unexpected), реализация вместо этого может восстановить обработчик по умолчанию.
Ожидается, что определяемый пользователем std::unexpected_handler
либо завершит программу, либо сгенерирует исключение. Если он генерирует исключение, может возникнуть одна из следующих трёх ситуаций:
1) исключение, сгенерированное std::unexpected_handler
, соответствует спецификации динамического исключения, которая была нарушена ранее. Новому исключению разрешается выйти из функции, и раскручивание стека продолжится.
2) исключение, сгенерированное std::unexpected_handler
, по-прежнему ��арушает спецификацию исключения:
2a) однако спецификация исключений допускает std::bad_exception: брошенный объект исключения уничтожается, а средой выполнения C++ создаётся std::bad_exception и бросается вместо него.
2b) спецификация исключения не разрешает std::bad_exception: вызывается std::terminate().
[править] Смотрите также
(удалено в C++17) |
функция, вызываемая при нарушении спецификации динамического исключения (функция) |
(удалено в C++17) |
изменяет функцию, вызываемую из std::unexpected (функция) |
(C++11)(удалено в C++17) |
получает текущий unexpected_handler (функция) |