1

很久以前,我曾经在我的 PHP 代码中使用“or die”。特别像这样:

$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 ....

有什么喜欢的吗?气馁?最佳实践?速度总是很好。

4

2 回答 2

2

您使用的两个示例没有任何问题,只是您已将它们夹在一条线上。

我不确定您在寻找什么,或者为什么您会发现 if 语句的错误 - 在这一点上它已经非常经过尝试并且是正确的。就是说,你可以做这样的事情来强行插入or操作员,但是在你离开后维护你的代码的人会诅咒你。

function throw_ex($what) {
  throw $what;
}

function fails() {
  return false;
}

$x = fails() or throw_ex(new exception("failed"));

我看不出这对 ol' if 语句有何帮助。

于 2010-08-21T02:24:32.103 回答
1

事实是,您应该使用 if 语句来捕获实际的、可恢复的错误。特别是如果您使用 InnoDB,它有时会在正常操作期间出现死锁,并且处理它们的正确方法不是 die(),而只需再次提交查询。

更多信息在这里:http ://arjen-lentz.livejournal.com/150464.html

于 2010-08-21T02:37:06.900 回答