std::exception::exception
来自cppreference.com
(1) | ||
exception() throw(); |
(C++11 前) | |
exception() noexcept; |
(C++11 起) | |
(2) | ||
exception( const exception& other ) throw(); |
(C++11 前) | |
exception( const exception& other ) noexcept; |
(C++11 起) | |
构造新的异常对象。
1) 默认构造函数。 what() 返回实现定义的字符串。
2) 复制构造函数。以 other 的内容初始化它的内容。如果 *this 与 other 均拥有动态类型
std::exception
,那么 std::strcmp(what(), other.what()) == 0。参数
other | - | 要赋值内容的另一异常 |
注解
因为不允许复制 std::exception
抛出异常,所以当派生类(例如 std::runtime_error)必须管理用户定义的诊断信息时,常将它实现为写时复制的字符串。
微软的实现包含了非标准的接收字符串的构造函数,因此可以允许直接抛出带有有意义的错误信息的实例。标准库中有最接近的等价行为的是 std::runtime_error 和 std::logic_error。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 471 | C++98 | 对异常副本的 what() 没有任何要求 | 添加要求 |