让我们考虑一下我有以下功能:
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价值不变吗?
是的,如果createSomeType()抛出异常,则不会进行赋值.控制流将来自throw语句,通过createSomeType()在堆栈上的任何对象的析构函数,最后到catch语句.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |