如何在C ++中使用一些打印输出

时间:2012-02-24 01:47:07

标签: c++

如果我只是使用throw some_string;,那么我会得到terminate called after throwing an instance of 'std::string'。如何使用实际显示的字符串值获取某些打印输出,例如terminate called after throwing 'This is wrong'或类似的东西?

谢谢。

3 个答案:

答案 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函数中。这就是

的原因
  1. 您可以捕获您投掷的对象并构造有意义的错误消息。
  2. 默认行为导致立即终止程序而不展开堆栈并清理。抛出的对象必须在主要返回之前的某处捕获,以避免这种情况。

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