c++ catch块中抛出的异常会被后面的catch块捕获吗?

考虑以下C代码:

try {
  throw foo(1);
} catch (foo &err) {
  throw bar(2);
} catch (bar &err) {
  // Will throw of bar(2) be caught here?
}

我会期望答案是否定的,因为它不在try块内,我在另一个问题中看到,答案不是Java,而是要确认C也不是。是的,我可以运行一个测试程序,但我想知道我的编译器有一个错误的远程情况下的行为的语言定义。

最佳答案
只有在相关的try块中抛出的异常可能被catch块所捕获。

转载注明原文:c++ catch块中抛出的异常会被后面的catch块捕获吗? - 代码日志