我正在调用一个函数,我在该函数中抛出一个异常。但我不想在同一个函数中捕获它,但想要在调用该函数的地方捕获它,就像这里是我的示例代码。
void foo()throw(...){
std::cout << "FOO" <<std::endl;
throw "Found";
}
void main(){
try{
foo();
}
catch(...){
std::cout << "exception catched" <<std::endl;
}
}
但是我在foo函数中抛出异常时崩溃了,但是我想在main函数中捕获它。
我该怎么做?
答案 0 :(得分:2)
throw;
没有操作数的 throw
重新抛出当前正在处理的异常。这意味着它只能用于catch
块。由于执行catch
时您不在throw;
块中,程序将被终止。
你需要抛出某些东西,就像运行时错误一样:throw std::runtime_error("oops");
。
另请注意,不应使用例外规范(例如throw(...)
中的void foo() throw(...)
)。有关原因的解释,请参阅"A Pragmatic Look at Exception Specifications."
答案 1 :(得分:0)