c ++中的异常机制问题

时间:2011-12-25 19:43:21

标签: c++ visual-studio-2010 exception exception-handling

我正在调用一个函数,我在该函数中抛出一个异常。但我不想在同一个函数中捕获它,但想要在调用该函数的地方捕获它,就像这里是我的示例代码。

void foo()throw(...){
  std::cout << "FOO" <<std::endl;
  throw "Found"; 
}
void main(){
  try{
      foo();
  }
  catch(...){
   std::cout << "exception catched" <<std::endl;
  }
}

但是我在foo函数中抛出异常时崩溃了,但是我想在main函数中捕获它。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

throw; 
没有操作数的

throw重新抛出当前正在处理的异常。这意味着它只能用于catch块。由于执行catch时您不在throw;块中,程序将被终止。

你需要抛出某些东西,就像运行时错误一样:throw std::runtime_error("oops");


另请注意,不应使用例外规范(例如throw(...)中的void foo() throw(...))。有关原因的解释,请参阅"A Pragmatic Look at Exception Specifications."

答案 1 :(得分:0)