我有一个简单的问题。
如果我们有一个具有动态分配成员的类(或使用动态分配的成员),并且我们经常使用该成员,那么处理某个操作失败的最佳方法是什么。
有一些尝试捕获,但我不是在谈论它。
1) 我在谈论这个事实,现在成员处于不应该的状态(这里我不是在谈论泄漏资源,我在谈论的事实,例如我们想要将100个元素推送到std :: vector但我们只添加了47个)。
现在例如当我们调用另一个方法sendToDB时,我们将向DB发送47而不是100个项目。 我对解决的猜测是在所有公共方法上都有bool返回值(尝试全部或全部(或者全部为100或推0),如果我们设法推送100则返回false,如果我们按0则返回false。
2) 但是这仍然留下了动态分配成员的问题(例如shared_ptr)。 这是否意味着使用它的每个方法都必须执行以下操作:
bool MyClass::sendDataToDB()
{
if (! m_DBConnection ) //m_DBConnection is std::shared_ptr
return false;
//...
}
答案 0 :(得分:1)
我不完全理解你的问题,但我明白了:
在你的班级你有一个存储(类似vector
),然后你想在其中插入一些内容,并且操作可能会在其中间失败。所以你想知道插入失败或操作是否完成!我对吗?如果答案是肯定的,我认为最好的解决办法是像iostream
那样在发生故障时设置fail
状态,你可以稍后检查或throw exception
但是无论如何,设置fail
位可以发出每个我的对象处于失败状态的信号