我试图确定以下代码中是否需要 try catch:
std::vector<int> values;
// ignore that this can throw std::bad_alloc
values.push_back(1);
try {
for (std::vector<int>::iterator iter = values.begin();
iter != values.end(); ++iter) {
++(*iter);
}
} catch (const std::bad_alloc&) {
// Is this needed?
}
查看 C++ 1998 标准,我唯一能找到的提示是第 23.1 节“容器要求”项目符号点 8,其中包含以下句子:
此参数的副本用于在每个容器对象的生命周期内由这些构造函数和所有成员函数执行的任何内存分配。
我对此的解释是容器中的任何成员函数都可以调用分配器,因此任何成员函数都可以抛出 std::bad_alloc。我是不是过于偏执了,还是真的是这样?