c++ - 异常处理可能出现的问题

标签 c++ exception

这个问题的灵感来自这篇文章:reason for memory leakage in C C++

由于使用异常而可能出现的其他类型的问题是什么?

我的意思是我们在使用异常处理时应该记住哪些问题

最佳答案

实际上,如果抛出意外异常,任何算法都可能失败。

例如,算法需要顺序执行两个操作,第二个操作会导致异常 - 第一个操作不会被取消(除非您处理这个问题),并且程序现在处于不一致的状态。在您链接到的不一致情况表现为内存泄漏 - 代码打算释放内存,但由于异常而未运行释放代码。

解决方案是预期异常并使用 RAII 来管理资源和状态一致性。例如,如果您需要执行两个操作,您首先在堆栈上创建一个“括号类”实例,第二个操作完成后,您在该实例上运行一个特殊方法,这意味着两个操作都已成功运行。如果抛出异常,该类的析构函数将回滚第一个操作。

关于c++ - 异常处理可能出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4448107/

相关文章:

java - JNI 到 Java 异常中的 NoSuchMethodError

c# - .NET4.5.1的Try-Catch-Finally阻止问题

c++ - 假设我们有两个 std::vector v1 和 v2,并且我们不想将它们组合在一个结构中。如何以与排序转换 v1 相同的方式转换 v2 ?

c++ - 成员函数模板是否需要 "inline"

c++ - 如何从主线程(从中创建)停止和销毁线程

java - 理解字节码java

c++ - 从未捕获的异常中获取堆栈跟踪?

c# - 将 MYSQL 日期获取到 C# 字符串异常中

c++ - 在其他文件中复制同时包含字符串和整数的文件,但顺序相反

c++ - C++ 类中的函数指针表