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 : выброшенный объект исключения уничтожается, и std::bad_exception конструируется средой выполнения C++ и выбрасывается вместо него.
2b) спецификация исключения не позволяет std::bad_exception : вызывается std::terminate() .
Смотрите также
|
(deprecated in C++11)
(removed in C++17)
|
функция, вызываемая при нарушении динамической спецификации исключений
(функция) |
|
(deprecated in C++11)
(removed in C++17)
|
изменяет функцию, вызываемую
std::unexpected
(функция) |
|
(deprecated in C++11)
(removed in C++17)
|
получает текущий
unexpected_handler
(функция) |