catch (...) 在 throw 上起作用吗?没有对象?

2023-12-04

当堆栈上方没有正在处理的未决异常时,C++ 标准规定以下代码应该发生什么?

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

没有物体的投掷会被接住吗?


来自 2003 C++ 标准 §15.1[ except.throw]/8 :

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

因此,在您的示例中,由于当前没有处理任何异常,因此不会抛出任何异常terminate()叫做。自从terminate()不回来,你的catch永远不会进入块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

catch (...) 在 throw 上起作用吗?没有对象? 的相关文章

随机推荐