【发布时间】:2020-02-03 22:08:45
【问题描述】:
为什么我没有得到任何输出而我的程序还是中止?
terminate_handler lambda = []() ->void {cout << "error";};
set_terminate(lambda);
throw 0;
【问题讨论】:
-
也许你捕捉到了异常,因此不要中止。创建minimal reproducible example
-
试试
cout << "error\n"。也许也可以<< flush来衡量。 -
请注意,
cout << "error\n"(没有flush)可以在终端上工作(因为在这种情况下,cout 默认设置为行缓冲),但如果写入文件或管道(默认为块缓冲) -
注意:在终止处理程序中做任何事情都非常有问题。如果您在终止处理程序中,则程序状态很有可能完全被破坏。因此,您可能会进一步破坏事物。如果房子被拆了,通常明智的做法是在离开的时候不要尝试做任何事情。
-
@Mgetz 老实说,我是一名学生,我正在自学 C++,所以我在学习 exit 函数时做了一些尝试,但他们没有工作