问:在堆栈展开时抛出并捕获异常是否安全,或者应用程序terminate
是否在第二次抛出时调用?
最小的例子:
void some_function()
{
try
{
// do stuff here that can throw
throw std::runtime_error("blah");
} catch(const std::exception& re)
{
try // this code could be in some function called from here
{
// do something with re here that throws a logical_error
throw std::logical_error("blah blah"); // does this call terminate?
} catch(const std::logical_error& le)
{
}
}
}
读完这个问题后我很好奇。
注意:我知道你可以/应该在析构函数中,但是在一个块catch(...)
中通常有 a 是否有意义- 也许在某个调用异常的函数中(在我的示例中)?try/catch
catch
re