Namespaces
Variants

std::exception:: exception

From cppreference.net
Utilities library
(1)
exception ( ) throw ( ) ;
(C++11 前)
exception ( ) noexcept ;
(C++11 起)
(C++26 起为 constexpr)
(2)
exception ( const exception & other ) throw ( ) ;
(C++11 前)
exception ( const exception & other ) noexcept ;
(C++11 起)
(C++26 起为 constexpr)

构造新的异常对象。

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