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_lengthstd::bad_cast(技术上不是标准库的一部分)std::bad_exceptionstd::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.std::stoi,std::stol,std::stoll,std::stoul,std::stoull,std::stof,std::stod,和std::stold可以抛出两个std::invalid_argument和std::out_of_range.std::regex_error.(我正在做这个CW答案,所以如果有人能想到更多这样的话,请随时将它们附加到这里.)
此外,对于第3版的C++编程语言,Bjarne Stroustrup有一个关于异常安全的可下载附录,这可能是相关的.
| 归档时间: |
|
| 查看次数: |
5603 次 |
| 最近记录: |