我知道 STL 会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出异常。
否则,显然“一些”STL 方法可能会引发其他异常。每个人似乎都提到的示例是 vector::at(),但我在任何地方都找不到其他示例的列表。
有谁知道这样的清单吗?
不会 100% 准确,并且是为了C++03,但是基于 GCC 4.3.4 的 grep 的半小时工作包括忽略 tr1 和 ext 但包括 iostream。至关重要的是,其中一些检查可能是由于该实现更喜欢更具防御性的编码,并且可能没有在标准中强制执行并且可以普遍使用......
-
bitset
-
std::overflow_error
- .to_ulong()
当太多位无法容纳 unsigned long 时
-
std::out_of_range
- operator[]()
尝试超越终点
-
new
-
typeinfo
-
std::bad_cast
无效时dynamic_cast
attempt
-
ios
-
std::ios_base::failure
使用异常掩码进行错误报告时
-
string
-
out_of_range
- at
/append
/assign
/insert
/erase
/replace
/copy
/substr
-
length_error
: 尝试超越max_size()
during reserve
或隐式调整大小(例如assign
/insert
/+=
etc.)
-
locale
-
std::bad_cast
如果语言环境不包含类型方面Facet
-
std::runtime_error
在各种空指针/未定义方面的情况下
-
deque
/vector
-
length_error
: 试图reserve()
或隐式增长 >max_size()
-
out_of_range
: at()
-
map
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)