影响和例外

ere*_*eOn 5 c++ exception

让我们考虑一下我有以下功能:

SomeType createSomeType();
Run Code Online (Sandbox Code Playgroud)

throw取决于某些原因.

然后:

SomeType val = SomeType(); // initial value

try
{
  val = createSomeType(); // here
}
catch (std::exception&)
{
}
Run Code Online (Sandbox Code Playgroud)

如果createSomeType()抛出,我可以一直假设val价值不变吗?

Fer*_*cio 7

是的,如果createSomeType()抛出异常,则不会进行赋值.控制流将来自throw语句,通过createSomeType()在堆栈上的任何对象的析构函数,最后到catch语句.