0

我有一个类似于以下内容的程序部分:

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();

有没有这样的构造?

4

2 回答 2

1

你应该使用例外。实际上,它们是一种外部控制流机制,这意味着您不必在常规代码中乱扔错误处理,也不必手动传播每个错误并在每次调用时检查错误。除了例外,您的原始代码按原样完全有效,编译器生成代码以检查错误并在发生错误时将它们传播给调用者。

于 2015-03-01T19:46:26.467 回答
-1

您应该将指向要调用的函数的指针存储在容器中,然后遍历容器。这样你就可以对结果做任何你喜欢的事情,并且每个函数调用都是一样的,而不必重复这个逻辑n次。

于 2015-03-01T19:49:39.227 回答