为什么我们需要 RAII 来解决异常安全问题

Why we need RAII for exception safety problems

本文关键字:解决 异常 安全 问题 RAII 我们 为什么      更新时间:2023-10-16
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。