C++标准库异常列表?

Bri*_*ian 15 c++ stl exception

是否有关于C++标准库异常的参考?我只是想知道哪些函数可能会抛出异常.

sbi*_*sbi 19

实际上,大多数标准库函数本身不会抛出异常.它们只传递由它们调用的用户代码抛出的异常.例如,如果您push_back()是向量的元素,则可以抛出(由于内存分配错误),如果对象的复制构造函数抛出.

库函数抛出的一些值得注意的例外(没有双关语)是:

  • out_of_range如果提供的索引无效,则会抛出一些方法:
    • std::vector<>::at()
    • std::basic_string<>::at()
    • std::bitset<>::set(),reset()flip().
  • 有些方法会抛出std::overflow_error整数溢出:
    • std::bitset<>::to_ulong()和(C++ 0x)to_ullong().
  • std::allocator<T>将传递它调用的std::bad_alloc抛出new.
  • 可以设置流,以便在设置std::ios_base::failure状态位时抛出.
  • 大阵列分配可以抛出 std::bad_array_new_length
  • 对引用的dynamic_cast可以抛出std::bad_cast(技术上不是标准库的一部分)
  • 从具有异常规范的函数中抛出无效异常将抛出一个 std::bad_exception
  • std::function::operator(...)如果它没有值,则调用a 将抛出std::bad_function_call.
  • 使用typeinfo空指针可能会抛出一个std::bad_typeid.
  • weak_ptr在指针被释放后访问a 将抛出一个std::bad_weak_ptr.
  • 使用不正确std::promise/std::future可能会抛出一个std::future_error.
  • (C++ 11)的字符串转换函数std::stoi,std::stol,std::stoll,std::stoul,std::stoull,std::stof,std::stod,和std::stold可以抛出两个std::invalid_argumentstd::out_of_range.
  • (c ++ 11)在正则表达式族中,构造函数和赋值方法可以抛出std::regex_error.

(我正在做这个CW答案,所以如果有人能想到更多这样的话,请随时将它们附加到这里.)

此外,对于第3版的C++编程语言,Bjarne Stroustrup有一个关于异常安全的可下载附录,这可能是相关的.