Ale*_* C. 8 c++ exception-handling
只是一个简单的问题.两者之间有什么区别吗?
void f(Foo x) try
{
...
}
catch(exception& e)
{
...
}
Run Code Online (Sandbox Code Playgroud)
和
void f(Foo x)
{
try { ... }
catch (exception& e)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
?
如果不是,为什么函数尝试块(构造函数的初始化列表的情况被放在一边)?如果复制构造函数Foo在x传递给异常时抛出异常会发生什么f?
CB *_*ley 10
函数try块只在构造函数中需要.在所有其他情况下,通过将函数的整个主体包含在普通的try/catch块中,可以实现完全相同的效果.
如果用于初始化参数的复制构造函数抛出异常,则会在函数调用之前发生.它不能被函数try块或函数中的异常处理程序捕获,因为函数没有被调用.