std::exception:: exception
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diagnostics library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::exception
| Member functions | ||||
|
exception::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
的内容进行初始化。如果
*
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() 提出要求 | 已添加 |