如果我只是使用throw some_string;
,那么我会得到terminate called after throwing an instance of 'std::string'
。如何使用实际显示的字符串值获取某些打印输出,例如terminate called after throwing 'This is wrong'
或类似的东西?
谢谢。
答案 0 :(得分:3)
通常,您应该抛出std::exception.
的子类。如果未捕获异常,大多数C ++实现会自动打印出调用exception::what()
的结果。
#include <stdexcept>
int main()
{
throw std::runtime_error("This is wrong");
}
使用GCC,输出:
terminate called after throwing an instance of 'std::runtime_error'
what(): This is wrong
Aborted
答案 1 :(得分:1)
您必须在某处添加代码来处理抛出的对象。如果不执行任何操作,程序将以调用abort结束,其结果是实现定义。解决方案是在代码中的某处添加一个catch块,例如在main函数中。这就是
的原因答案 2 :(得分:0)
你必须抓住异常
#include <iostream>
#include <string>
int main(int argc, char *argv[]) try
{
throw std::string("This is a test");
return 0;
}
catch(const std::string &s)
{
std::cout << s << std::endl;
}