不与try和catch一起使用时抛出什么?

时间:2013-08-10 19:10:09

标签: c++ exception-handling try-catch throw

throw在不与try和catch一起使用时会做什么?像:

 if (IsEmpty()) throw "Stack is empty, Cannot delete";

它是否在控制台中打印?

但是当throw包含一些int或char作为其参数时,它会被抛出;在这种情况下会发生什么?

2 个答案:

答案 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