Namespaces
Variants

std::exception::exception

Из ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы проверки возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношения (устарело в C++20)
 
 
 
exception() throw();
(1) (до C++11)
exception() noexcept;
(начиная с C++11)
(constexpr начиная с C++26)
exception( const exception& other ) throw();
(2) (до C++11)
exception( const exception& other ) noexcept;
(начиная с C++11)
(constexpr начиная с C++26)

Создаёт новый объект исключения.

1) Конструктор по умолчанию. what() возвращает строку, определённую реализацией.
2) Конструктор копирования. Инициализирует содержимое содержимым other. Если *this и other оба имеют динамический тип std::exception, то std::strcmp(what(), other.what()) == 0.

Параметры

other - другое исключение для присвоения содержимого

Примечания

Поскольку копирование std::exception не должно генерировать исключения, когда производные классы (такие как std::runtime_error ) должны управлять пользовательским диагностическим сообщением, это обычно реализуется как строка с копированием при записи.

Реализация Microsoft включает нестандартные конструкторы, принимающие строки, что позволяет создавать экземпляры непосредственно с осмысленным сообщением об ошибке. Ближайшими стандартными аналогами являются std::runtime_error или std::logic_error .

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 471 C++98 there is no requirement on what() of the exception copy added