抛出异常时尝试使用cout语句执行块行为

时间:2013-04-05 18:54:25

标签: c++ exception try-catch

如果try块在同一个块中抛出异常之前包含cout语句,那么这些语句是否会被打印到控制台,或者它的行为就好像try块从未执行过一样?例如:

void foo()
{
  try
  {
    cout << "1" << endl;
    cout << "2" << endl;
    bar();               //exception thrown in this function, but caught below
  }

  catch (exception e)
  {
    cout << e.what();    //assume the message is "error"
  }
}

此功能的输出是

1
2
error

error

1 个答案:

答案 0 :(得分:2)

输出为

1
2
error

异常不会“撤消”

的影响
cout << "1" << endl;
cout << "2" << endl;