【发布时间】:2010-10-19 03:03:46
【问题描述】:
我想知道是否有更好的方法来处理 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 必须是一个表达式,因此您不能真正从函数中转到或返回。有人会觉得这很有价值还是太有限了?
编辑:我想我应该打算在第一个示例中包含换行符。问题是,如果您决定在中间添加另一个表达式,则需要小心。
【问题讨论】:
标签: c error-handling short-circuiting