1 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
請(qǐng)不要這樣做,但這里有一個(gè)選項(xiàng):
try {
if (TRUE){
goto ugh;
}
echo "\ndid not break";
ugh:
} catch (Exception $e){
echo "\ndid catch";
} finally {
echo "\ni'm so tired";
}
我強(qiáng)烈建議不要使用goto. 我認(rèn)為如果您使用goto.
我建議:
try {
if (TRUE){
echo "\nThat's better";
} else {
echo "\ndid not break";
}
} catch (Exception $e){
echo "\ndid catch";
} finally {
echo "\ni'm so tired";
}
您只需將其余部分包裝try成 anelse即可跳過(guò)它。
另一種選擇是聲明一個(gè) finally 函數(shù),調(diào)用它,然后返回。
//I'm declaring as a variable, as to not clutter the declared methods
//If you had one method across scripts, naming it `function doFinally(){}` could work well
$doFinally = function(){};
try {
if (TRUE){
$doFinally();
return;
}
echo "\ndid not break";
} catch (Exception $e){
echo "\ndid catch";
} finally {
$doFinally();
}
如果您需要繼續(xù)腳本,您可以聲明$doFinally如下內(nèi)容:
$doFinally = function($reset=FALSE){
static $count;
if ($reset===TRUE){
$count = 0;
return;
} else if ($count===NULL)$count = 0;
else if ($count>0)return;
}
然后在finally塊之后,您可以調(diào)用$doFinally(TRUE)以將其重置為下一個(gè)try/catch
- 1 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報(bào)