cpp的新手。当我在迭代器上调用擦除而不增加它时,我的程序立即退出,没有任何迹象或崩溃。在下面的示例中,仅打印了“After if condition”,并且没有打印。没有显示错误。但是,如果我正确调用list.erase(it++); 比它打印所有。 我的问题是当我不正确时发生了什么。为什么我没有看到任何崩溃或退出?我的担心和我问这个问题的原因是关于捕捉这些类型的崩溃,为什么我没有在 catch 块中捕捉到它?有没有办法抓住它?
int main(int argc, char *argv[]) {
try {
list<int>::iterator it;
list<int> list;
list.push_back(1);
for (it = list.begin(); it != list.end(); ++it) {
if ((*it) == 1) {
list.erase(it);
}
cerr << "After if condition " << endl;
}
cerr << "After for condition" << endl;
} catch (...) {
cerr << "catch exception" << endl;
}
cerr << "Finish" << endl;
}