为什么 C 不使用嵌套异常来允许从析构函数抛出异常?
虽然通常不建议从析构函数抛出异常,但有有人建议在这种情况下使用嵌套异常。然而,由于某些限制,这个想法还没有实现。
嵌套异常与 std::terminate
当一个异常从析构函数抛出时,另一个异常可能是“在飞行中”。嵌套异常允许堆叠多个异常,但在这种情况下,并不能立即清楚如何处理这种情况。从历史上看,决定应该调用 std::terminate (或其关联的处理程序 std::terminate_handler)。
嵌套异常的限制
虽然嵌套异常可以可能解决析构函数抛出的问题,但存在实际限制:
当前状态和未来前景
从 C 11 和 C 14 开始,嵌套异常为不用于从析构函数中抛出。 std::terminate 仍然是默认行为。然而,如果潜在的性能和兼容性问题得到解决,这可能会在未来的 C 版本中发生变化。
替代方法
替代方法可以从析构函数中抛出,而不是从析构函数中抛出需要考虑:
以上是为什么 C 不使用嵌套异常来进行析构函数抛出?的详细内容。更多信息请关注PHP中文网其他相关文章!