std::exception::exception

来自cppreference.com
< cpp‎ | error‎ | exception
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
 
(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 的内容初始化它的内容。如果 *thisother 均拥有动态类型 std::exception,那么 std::strcmp(what(), other.what()) == 0

参数

other - 要赋值内容的另一异常

注解

因为不允许复制 std::exception 抛出异常,所以当派生类(例如 std::runtime_error)必须管理用户定义的诊断信息时,常将它实现为写时复制的字符串。

微软的实现包含了非标准的接收字符串的构造函数,因此可以允许直接抛出带有有意义的错误信息的实例。标准库中有最接近的等价行为的是 std::runtime_errorstd::logic_error

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 471 C++98 对异常副本的 what() 没有任何要求 添加要求