throw
在不与try和catch一起使用时会做什么?像:
if (IsEmpty()) throw "Stack is empty, Cannot delete";
它是否在控制台中打印?
但是当throw
包含一些int或char作为其参数时,它会被抛出;在这种情况下会发生什么?
答案 0 :(得分:3)
C ++运行时将有类似的东西(这不是它看起来的样子,但你可以认为它是这样工作的,除非你正在做一些非常特殊的事情):
void BeforeMain()
{
try
{
int res = main();
exit(res);
}
catch(...)
{
cout << "Unhandled exception. Terminating..." << endl;
terminate();
}
}
答案 1 :(得分:0)
你被允许这样做,如果你没有放置一个明确的try catch块,它将不会被你的代码中的任何地方捕获。 Windows使用SEH机制来处理,在那里你可以有一个未捕获的异常过滤器来找出相同的
有关更多详细信息,请参阅此帖子 Catching exceptions thrown without try/catch