我知道STL会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。
否则,显然'少数'STL方法可能抛出其他异常。每个人似乎都提到的例子是vector :: at(),但我无法在任何地方找到其他人的列表。
有谁知道这样的清单?
答案 0 :(得分:16)
不会100%准确,并且适用于 C ++ 03 ,但基于通过GCC 4.3.4点击的半小时努力包括,忽略tr1和ext但包括iostream。至关重要的是,其中一些检查可能是由于这种实施更倾向于采用更具防御性的编码,并且可能不会在标准中强制要求并且普遍适用....
bitset
std::overflow_error
- .to_ulong()
当太多位不适合无符号长std::out_of_range
- operator[]()
尝试过去结束new
std::bad_alloc
typeinfo
std::bad_cast
无效dynamic_cast
尝试ios
std::ios_base::failure
string
out_of_range
- at
/ append
/ assign
/ insert
/ erase
/ replace
/ copy
/ substr
length_error
:在max_size()
期间或隐式调整大小时尝试超过reserve
(例如assign
/ insert
/ +=
等。)locale
std::bad_cast
如果区域设置不包含Facet
std::runtime_error
在各种null-pointer / undefined-facet情况下deque
/ vector
length_error
:尝试reserve()
或隐式增长> max_size()
out_of_range
:at()
map
std::out_of_range
:at()
答案 1 :(得分:3)
好吧,我有一本名为 The C ++ Standard 的大型巨型书,其中包含标准库中所有函数的完整描述以及它们能做什么/不能做什么。