std::exception::exception
来自 zh.cppreference.net
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。参数
| 其他 | - | 另一个用于分配内容异常的规则 |
注释
由于不允许在复制
std::exception
时抛出异常,当派生类(例如
std::runtime_error
)需要管理用户定义的诊断消息时,通常将其实现为写时复制字符串。
Microsoft 的实现包含接受字符串的非标准构造函数,从而允许直接抛出带有有意义错误信息的实例。最接近的标准等价物是 std::runtime_error 或 std::logic_error 。
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 471 | C++98 | 未对异常副本的 what() 提出要求 | 已添加 |