Namespaces
Variants

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() 提出要求 已添加