为什么我们需要 RAII 来解决异常安全问题
Why we need RAII for exception safety problems
unique_ptr<X> f()
{
unique_ptr<X> p(new X); // or {new X} but not = new X
// do something - maybe throw an exception
return p; // the ownership is transferred out of f()
}
当抛出异常时,为什么我们关心对象X的存在, 为什么我们关心它所占据的记忆?
该过程将在处理异常后立即终止,记忆将被释放,我们为什么要关心这个?
因为在大多数应用程序中,进程不会立即终止,并且您不希望泄漏内存。你不妨问一下,为什么要关心内存泄漏。
处理异常后,进程将很快终止
谁说的?
如果在出现异常的情况下您将执行的所有操作都是终止,那么是的,您可以忽略它。但是,您应该捕获很多例外。使您的代码在特殊情况下相对防弹并不是一件坏事。
一旦您决定真正开始尝试捕获异常而不是忽略它们,您就需要 RAII。
相关文章:
- 运行同一解决方案的另一个项目的项目
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 使用 LoadToolbarEx 解决异常以及正常图像与大图像计数之间的差异
- HTTP异常::无法连接到任何解决的端点-CPPRESTSDK
- 当主站请求保存Arduino从站的注册表值时,如何解决Pymodbus异常
- 由于字符串到JSON转换而产生的异常如何解决
- 尝试解决HackerBank上的BFS挑战时出现错误的alloc异常
- 为什么我们需要 RAII 来解决异常安全问题
- 如何通过引用捕获异常来解决局部变量问题
- 将异常转换为可选:无法解决重载函数类型
- 我该如何解决它?libc++abi.dylib:以 std::invalid_argument 类型的未捕获异常终止:s
- 无法解决 c++ 中的浮点异常
- 使用零长度元组的boost异常,如何解决
- 派生自库中的std::exception:仅头文件解决方案是否适用于捕获异常
- 用c++递归解决迷宫,不能处理异常情况
- 当将卡萨布兰卡代码集成到现有的c++解决方案中时,Memcpy异常
- 如何解决未处理的异常?(GLFW3 OpenGL)
- 未处理的异常-如何解决它,c++
- 异常未解决的外部符号错误