-2

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

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

它会在控制台中打印吗?

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

4

2 回答 2

2

C++ 运行时会有一些类似的东西(这并不完全是它的样子,但你可以认为它是这样工作的,除非你正在处理一些非常特别的东西):

void BeforeMain()
{
     try
     {
        int res = main();
        exit(res);
     } 
     catch(...)
     {
         cout << "Unhandled exception. Terminating..." << endl;
         terminate();
     }
}   
于 2013-08-10T19:18:00.393 回答
0

您可以这样做,如果您没有放置明确的 try catch 块,它将不会在您的代码中的任何地方被捕获。Windows 使用 SEH 机制来处理,您可以在其中使用未捕获的异常过滤器来找出相同的情况。

有关更多详细信息,请参阅此帖子 捕获不使用 try/catch 引发的异常

于 2013-08-10T19:21:26.500 回答