catch(…)在throw上工作吗?没有目标

Does catch (...) work on throw; with no object?

本文关键字:目标 工作 throw catch      更新时间:2023-10-16

c++标准说,当没有挂起异常正在处理更高的堆栈时,下面的代码应该发生什么?

try {
  throw;
} catch (...) {
  cerr << "Caught exception." << endl;
}

没有对象的throw是否会被捕获?

源自2003年c++标准§15.1[exception .throw]/8:

如果当前没有处理异常,执行一个没有操作数的抛出表达式调用terminate() .

因此,在您的示例中,由于当前没有处理异常,因此不会抛出任何异常,而是调用terminate()。由于terminate()不返回,您的catch块将永远不会进入。