这更像是一个概念性问题。使用Try/catch和Do /虽然
它是aceptable /良好的编程混合做/同时用try/catch语句的循环?
例如:
<?php
function main() {
$failure = 0;
do {
$failure += foo();
$failure += bar();
...
if ($failure) { return $failure; }
}
while ($failure == 0);
}
function foo() {
try {
echo 'DO FOO STUFF<br />';
return 0;
}
catch (Exception $e) {
return 1;
}
}
function bar() {
try {
echo 'DO BAR STUFF<br />';
return 0;
}
catch (Exception $e) {
return 1;
}
}
?>
我问的原因是我读的地方,两个混合是不好的做法。你应该创建你自己的例外,并“抛出”它们。但是这不是一点矫枉过正?
编辑: 为了解释这一场景这个问题出现了,可想而知,必须遵循一条线的机器人。机器人每进行一步计算其位置(X位置,Y位置,Z位置和“姿势”位置)并将信息发送到服务器。服务器会重新检查这些信息。如果发现任何异常,服务器会向机器人发送“停止”信号。机器人停下来,重新计算其位置,重新发送信息并等待“去”信号。
此循环示例基于从机器人接收的数据馈送。如果出现问题(例如无线链路断裂,障碍物或失误),机器人必须停下来以防止误入歧途或坠落等任何事情。我们不知道哪里出了问题,或者为什么出问题,只是它出错了(或不是)。 (这实际上是在代码的另一部分,而不是基于PHP的调试模块)。
编辑2: 像其他人指出的那样,似乎是正确的做法是适当提高/处理异常。 由于大家似乎都同意这一点,我不知道谁给予“正确答案”打勾。 我会等几天,如果没有问题的话,可以给予更多选票。
对不起,脱离主题,但在回路中“返回”不是一个好的选择。 – 2011-06-03 04:21:54
不!如果建设性的话,所有的投入都很好。顺便说一句,为什么从循环返回不好?转到会更好吗? – Tivie 2011-06-03 04:45:18
在你上面的例子中,它永远不会检查while()的条件,因为在do {}中之前都返回了一切。 – 2011-06-03 04:50:53