std::bad_exception это тип исключения, генерируемого средой выполнения C++ в следующих ситуациях:
Если std::exception_ptr хранит копию перехваченного исключения и если конструктор копирования объекта исключения, перехваченного std::current_exception, генерирует исключение, перехваченное исключение является экземпляром std::bad_exception.
(начиная с C++11)
Если спецификация динамического исключения нарушена и std::unexpected генерирует или повторно генерирует исключение, которое по-прежнему нарушает спецификацию исключения, но спецификация исключения допускает std::bad_exception, std::bad_exception генерируется.
возвращает поясняющую строку (virtual public of std::exception функция-элемент)[править]
Пример
Компилируется только в режиме C++14 (или более ранней версии).
Запустить этот код
#include<iostream>#include<exception>#include<stdexcept>voidmy_unexp(){throw;}// Спецификации динамических исключений устарели в C++11voidtest()throw(std::bad_exception){throwstd::runtime_error("тест");}intmain(){// Устарело в C++11, удалено в C++17std::set_unexpected(my_unexp);try{test();}catch(conststd::bad_exception&e){std::cerr<<"Поймано "<<e.what()<<'\n';}}