我有一个类似于以下内容的程序部分:
X->updateA();
X->updateB();
X->updateC();
X->updateD();
每个函数都应返回一个整数,指示它是否成功运行,如果成功则说int ret_val=0
,如果不成功则说int ret_val=1
。
我想知道是否存在任何包装构造,只要ret_val == 0
连续处理每个函数。在我的情况下,无论X->updateD();
的值如何,它都应该调用ret_val
。
现在我有:
int ret_val = 0;
ret_val = X->updateA();
if (ret_val == 0) ret_val = X->updateB();
if (ret_val == 0) ret_val = X->updateC();
X->updateD();
我认为这不是真的可读。我更喜欢的是类似于while循环的东西,尽管它必须在每次函数调用后检查条件。有点像这样:
int ret_val = 0;
unless(ret_val != 0)
{
ret_val = X->updateA();
ret_val = X->updateB();
ret_val = X->updateC();
}
X->updateD();
有没有这样的构造?
答案 0 :(得分:1)
您应该使用例外。实际上,它们是一种外部控制流机制,这意味着您不必通过错误处理来丢弃常规代码,并手动传播每个错误并在每次调用时检查错误。除了例外,原始代码完全有效,编译器生成代码以检查错误,并在发生错误时将它们传播给调用者。
答案 1 :(得分:-1)
您应该存储指向要在容器中调用的函数的指针,然后遍历容器。这样你就可以对结果做任何你喜欢的事情,并且对于每个函数调用都是一样的,而不必重复那些逻辑 n 次。