Пространства имён
Варианты
Действия

std::bad_exception

Материал из cppreference.com
< cpp‎ | error
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Библиотека диагностики
Обработка исключений
Сбои обработки исключений
bad_exception
(до C++17*)
(до C++17*)
(C++11)(до C++17*)    
(до C++17*)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Поддержка системных ошибок
(C++11)
(C++11)
Утверждения
Трассировка стека
 
 
Определено в заголовочном файле <exception>
class bad_exception;

std::bad_exception это тип исключения, генерируемого средой выполнения C++ в следующих ситуациях:

  • Если std::exception_ptr хранит копию перехваченного исключения и если конструктор копирования объекта исключения, перехваченного std::current_exception, генерирует исключение, перехваченное исключение является экземпляром std::bad_exception.
(начиная с C++11)
  • Если спецификация динамического исключения нарушена и std::unexpected генерирует или повторно генерирует исключение, которое по-прежнему нарушает спецификацию исключения, но спецификация исключения допускает std::bad_exception, std::bad_exception генерируется.
(до C++17)
cpp/error/exceptionstd-bad exception-inheritance.svg

Диаграмма наследования

Содержание

[править]Функции-элементы

создаёт объект bad_exception
(public функция-элемент)
копирует объект
(public функция-элемент)
[virtual]
возвращает пояснительную строку
(virtual public функция-элемент)

Унаследован от std::exception

Функции-элементы

уничтожает объект исключения
(virtual public of std::exception функция-элемент)[править]
[virtual]
возвращает поясняющую строку
(virtual public of std::exception функция-элемент)[править]

[править]Пример

Компилируется только в режиме C++14 (или более ранней версии).

#include <iostream>#include <exception>#include <stdexcept>   void my_unexp(){throw;}   // Спецификации динамических исключений устарели в C++11void test()throw(std::bad_exception){throwstd::runtime_error("тест");}   int main(){// Устарело в C++11, удалено в C++17std::set_unexpected(my_unexp);try{ test();}catch(const std::bad_exception& e){std::cerr<<"Поймано "<< e.what()<<'\n';}}

Возможный вывод:

Поймано std::bad_exception
close