异常处理和成员变量

时间:2012-11-01 09:40:35

标签: c++ exception-handling c++11

我有一个简单的问题。

如果我们有一个具有动态分配成员的类(或使用动态分配的成员),并且我们经常使用该成员,那么处理某个操作失败的最佳方法是什么。
有一些尝试捕获,但我不是在谈论它。

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;
   //...


}

1 个答案:

答案 0 :(得分:1)

我不完全理解你的问题,但我明白了:

在你的班级你有一个存储(类似vector),然后你想在其中插入一些内容,并且操作可能会在其中间失败。所以你想知道插入失败或操作是否完成!我对吗?如果答案是肯定的,我认为最好的解决办法是像iostream那样在发生故障时设置fail状态,你可以稍后检查或throw exception但是无论如何,设置fail位可以发出每个我的对象处于失败状态的信号