Wikipedia说“一段代码是异常安全的,如果代码中的运行时故障不会产生不良影响,例如内存泄漏,乱码存储数据或无效输出。异常安全代码必须满足放置的不变量即使发生异常,也可以在代码上。”
看来我们需要异常处理来保证异常安全。另一方面,在我看来,异常处理在 Qt 应用程序中并不是很流行。
您在 Qt 中满足异常安全的最佳实践是什么?你用什么来代替异常处理?
最佳答案
C++ 有一个非常强大的异常安全机制。为所有因异常而超出范围的变量运行析构函数。这与 Java 等语言不同,后者的异常安全要求程序员获取 catch
和 finally
从句对。
调用析构函数的 C++ 行为与堆栈上的 Qt 对象无缝协作。 Qt 类都有析构函数,没有一个需要手动清理。此外,QSharedPointer<T>
可用于管理堆分配的 Qt 对象;当最后一个指针超出范围时,对象被销毁。这包括指针由于异常而超出范围的情况。
因此,异常安全当然存在于 Qt 中。它只是透明的。
关于c++ - Qt 中的异常安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130734/