在我的程序中,我想捕获函数中的每个错误.我尝试过使用try/catch但程序仍然存在.我已经建立了一个我想要捕捉的例子
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<string> test;
test.push("lel");
try {
test.pop();
test.pop();
}
catch (...) {
cout << "Caught" << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这仍然导致程序退出.如何捕获任何错误,或者如果不可能,则会发生此特定错误?
stack::pop()exception当堆栈为空时不会抛出任何东西.相反,它是从空堆栈弹出的未定义行为.由于没有抛出异常,你的catch子句无法捕获任何内容,而是程序终止(任何事情都可能发生在UB中).
所以,你的意图捕获所有的错误,我认为这是把一个很好的实践try-catch中main,以捕捉到任何来自任何其他地方逃出来的,你应该能够赶上如果异常实际上是被抛出.只需处理一些问题:
catch如果有任何UB,控制可能无法到达您的区块.| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |