1 回答
TA贡献1846条经验 获得超7个赞
请不要这样做,但这里有一个选项:
try {
if (TRUE){
goto ugh;
}
echo "\ndid not break";
ugh:
} catch (Exception $e){
echo "\ndid catch";
} finally {
echo "\ni'm so tired";
}
我强烈建议不要使用goto. 我认为如果您使用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即可跳过它。
另一种选择是声明一个 finally 函数,调用它,然后返回。
//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();
}
如果您需要继续脚本,您可以声明$doFinally如下内容:
$doFinally = function($reset=FALSE){
static $count;
if ($reset===TRUE){
$count = 0;
return;
} else if ($count===NULL)$count = 0;
else if ($count>0)return;
}
然后在finally块之后,您可以调用$doFinally(TRUE)以将其重置为下一个try/catch
- 1 回答
- 0 关注
- 211 浏览
添加回答
举报