很久以前我曾经在我的PHP代码中使用“或死”。特别是这样:
$q = mysql_query('......') or die(mysql_error());
显然,这些日子非常可耻,但X或Y原则仍然对我说话。 所以我虽然试试这个:
$r = $this->exec($query) or throw new Exception('FAIL');
但这会导致解析错误! 这些陈述的最佳做法是什么。它看起来也很好看(显然!)......
我不喜欢
if ( !($r = $this->exec($query)) ) throw new ...
或
$r = $this->exec($query)
if ( !$r ) throw new ....
任何收藏?挫折?最佳做法?速度总是很好。
答案 0 :(得分:2)
您使用的两个示例没有任何问题,只是您已将它们连接到一行。
我不确定你在寻找什么,或者为什么你会发现if语句的错误 - 在这一点上它是非常有用的。也就是说,你可以在or
运算符中执行类似这样的操作,但是在你离开后维护代码的人会诅咒你。
function throw_ex($what) {
throw $what;
}
function fails() {
return false;
}
$x = fails() or throw_ex(new exception("failed"));
我看不出这对于'if'声明有什么影响。
答案 1 :(得分:1)
事实是,你应该使用if语句来捕获实际的,可恢复的错误。特别是如果你正在使用InnoDB,它有时会在正常操作期间出现死锁,并且处理它们的正确方法不是die(),而只是再次提交查询。