![]() |
1
7
取决于你所说的“继续”。无论什么操作需要资源都会失败:这就是“需要”的意思。因此,当您希望在出现错误后继续时,可能会编写如下代码:
这就是为什么只有在有值得做的事情时才应该捕捉异常(在本例中,报告失败并继续下一个Thingym)。 如果要在失败时重试,但仅当构造函数失败时,而不是其他任何失败时:
这或多或少是
如果要在失败时尝试其他资源:
如果“use v”和“use w”基本上是相同的代码,那么重构成一个函数并从两个地方调用它。你的职能在这一点上做了很多工作。 |
![]() |
2
7
如果RAII构造函数抛出,则在抛出点之前绑定到RAII对象的所有资源都将被正确清理。C++规则是合理设计的,以保证。
如果你的
所以如果你因此使用RAII,你不需要手册
|
![]() |
3
2
|
![]() |
4
0
所有使用v的代码都需要在try块中。如果问题是如何缩小引发异常的代码的范围,则可以使用某种标志来指示您在try块中的位置,如下所示:
|
![]() |
Post Self · std::是否可以退出泄漏内存? 7 年前 |
![]() |
OneRaynyDay · 在这种情况下,我应该使用智能指针吗? 7 年前 |
![]() |
jcai · 对象的ctor和dtor必须在同一个线程上吗? 7 年前 |
![]() |
Stradigos · 防止解构宏中定义的匿名变量,直到作用域结束 8 年前 |
![]() |
user877329 · 通用句柄类 9 年前 |