X Tutup
The Wayback Machine - https://web.archive.org/web/20211006164356/https://ru.cppreference.com/w/cpp/error/bad_exception
Пространства имён
Варианты
Действия

std::bad_exception

Материал из cppreference.com
< cpp‎ | error

 
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, RTTI, свойства типов)    
Макросы тестирования функциональности библиотеки (C++20)
Управление динамической памятью
Программные утилиты
Обработка ошибок
Поддержка сопрограмм (C++20)
Вариативные функции
(C++17)
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)  
(C++20)
Операции обмена и типа
(C++14)
(C++11)

(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

Элементарные преобразования строк
(C++17)
(C++17)

Stacktrace
 
Обработка ошибок
Обработка исключений
Сбои обработки исключений
bad_exception
(до C++17)
(до C++17)
(C++11)(до C++17)
(до C++17)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Утверждения
Средства system_error
(C++11)
(C++11)
 
Определено в заголовочном файле <exception>
class bad_exception;
std::bad_exception это тип исключение в C + + выполнения в следующих ситуациях:
Оригинал:
std::bad_exception is the type of the exception thrown by the C++ runtime in the following situations:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
Если динамическая спецификация исключений нарушается и std::unexpected бросает или rethrows исключением того, что по-прежнему нарушает спецификацию исключений, но исключения спецификация позволяет std::bad_exception, std::bad_exception выбрасывается.
Оригинал:
If a динамическая спецификация исключений is violated and std::unexpected throws or rethrows an exception that still violates the exception specification, but the exception specification allows std::bad_exception, std::bad_exception is thrown.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Если std::exception_ptr хранит копию поймал исключение, и если конструктор копирования объекта исключения поймал current_exception генерирует исключение, захваченных исключение является экземпляром std::bad_exception.
Оригинал:
If std::exception_ptr stores a copy of the caught exception and if the copy constructor of the exception object caught by current_exception throws an exception, the captured exception is an instance of std::bad_exception.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
cpp/error/exceptionstd-bad exception-inheritance.svg

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

Содержание

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

строит bad_exception объекта
Оригинал:
constructs the bad_exception object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-элемент)
копии объекта
Оригинал:
copies the object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-элемент)
[virtual]
возвращает пояснительной строкой
Оригинал:
returns the explanatory string
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual public функция-элемент)

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

Member functions

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

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

#include <iostream>
#include <exception>
#include <stdexcept>
 
void my_unexp() { throw; }
 
void test() throw(std::bad_exception)
{
    throw std::runtime_error("test");
}
 
int main()
{
    std::set_unexpected(my_unexp);
    try {
         test();
    } catch(const std::bad_exception& e)
    {
        std::cerr << "Caught " << e.what() << '\n';
    }
}

Вывод:

Caught std::bad_exception
X Tutup