Ash*_*ish 5 c++ destructor exception
我不明白为什么如果存在活动异常,那么如果再次引发异常,则会导致程序终止.有人能解释一下吗
GMa*_*ckG 15
这是什么意思?它不能"双重捕捉"或任何东西,也不能简单地忽略它.该标准规定如果在堆栈展开期间另一个异常转义,terminate则应调用.
C++常见问题解答中有更多讨论.一个"解决方案"是将析构函数代码包装在try/catch块中,并且不要让异常转义.
另一个是提出某种自定义异常链方案.您可以执行上述操作,但不是忽略异常,而是将其附加到当前抛出的异常,并在catch站点手动处理.
我认为,最好的解决方案是尝试从析构函数中删除异常代码.