如果您像这样抛出未处理的异常main
:
#include <stdexcept>
#include <iostream>
int main()
{
std::cout << "Hello World 1" << std::endl;
throw new std::invalid_argument("A");
return 0;
}
...然后该过程将终止并显示消息“在抛出'std :: invalid_argument *'实例后调用终止”。
您实际上会在控制台上看到:
Hello World 1
terminate called after throwing an instance of 'std::invalid_argument*'
如果您不打印更多文本std::endl
,然后抛出异常:
#include <stdexcept>
#include <iostream>
int main()
{
std::cout << "Hello World 1" << std::endl;
std::cout << "Hello World 2";
throw new std::invalid_argument("A");
return 0;
}
...然后您将看不到控制台上的第二行:
Hello World 1
terminate called after throwing an instance of 'std::invalid_argument*'
似乎此错误消息会覆盖最后一行,例如\r
在它之前打印。
如何解决此行为?