std::exception::exception

来自cppreference.com
< cpp‎ | error‎ | exception
 
 
 
 
 
(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 的内容初始化它的内容。如果 *thisother 均拥有动态类型 std::exception,那么 std::strcmp(what(), other.what()) == 0

参数

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

注解

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

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

缺陷报告

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

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