這更像是一個概念性問題。使用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