我想知道是否有更好的方法来处理 C 中的情况,即一旦在一系列表达式中遇到错误,就想退出函数。(在这种情况下,它是一个在错误时返回 NULL 的函数)
例如,在一些 C 代码中,他们试图通过将一系列语句与 AND (&&) 组合来缩短错误处理。
return doSomething() &&
doSomething2() &&
doSomething3() && ... ;
这让我很恼火,因为我们在一份声明中的一行写了这么多。但我想另一种选择是
if (!(value = doSomething()))
return NULL;
if (!(value = doSomething2()))
return NULL;
etc
return value;
但是我在 perl 和 bash 脚本中看到的短路错误评估呢?
int die(int retvalue) {
exit(retvalue);
}
.....
(value = doSomething()) || die(1);
(value = doSomething2()) || die(2);
(value = doSomething3()) || die(3);
return value;
这样做的主要问题是 RHS 必须是一个表达式,因此您不能真正从函数中转到或返回。有人会觉得这很有价值还是太有限了?
编辑:我想我应该打算在第一个示例中包含换行符。问题是如果您决定在中间添加另一个表达式,则需要小心。