std::exception::exception
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) |
|
Создаёт новый объект исключения.
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 |