Spec-Zone.ru › C++

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().

См. также

unexpected
(устарело в C++11)(удалено в C++17)
функция, вызываемая при нарушении динамической спецификации исключений
(функция)
set_unexpected
(устарело в C++11)(удалено в C++17)
изменяет функцию, вызываемую функцией std::unexpected
(функция)
get_unexpected
(устарело в C++11)(удалено в C++17)
получает текущий unexpected_handler
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error/unexpected_handler

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API