Php 这是一个无休止的循环吗?
我有以下代码:Php 这是一个无休止的循环吗?,php,Php,我有以下代码: do { try { $result = $class->function_x($params); //this will fire an Exception break; } catch (Exception $e) { error_log($e->getMessage()); sleep(5); } } while(true); 这是一个无
do {
try {
$result = $class->function_x($params); //this will fire an Exception
break;
}
catch (Exception $e)
{
error_log($e->getMessage());
sleep(5);
}
} while(true);
这是一个无止境的循环吗
方法调用触发异常,以便catch写入error\u log
并等待5秒钟,但由于异常,中断不会执行(中断while),循环将是无止境的
这是正确的还是我遗漏了什么 是,如果
$class->function\ux($params)代码>总是抛出异常,然后它是无止境的循环
一旦抛出异常,控件将被赋予catch块,并且break
将永远不会执行。如果$result=$class->function\u x($params)代码>抛出异常
它永远不会进入中断代码>,因为它将在发生异常后跳出到捕获
所以是的,它看起来像是无止境的循环。您不应该在try catch
中使用break语句。您可以使用goto执行此任务。这将防止您的异常:
do {
try {
$result = $class->function_x($params);
if(something) goto bre;
} catch(Exception $e) {
error_log($e->getMessage());
sleep(5);
}
bre:
} while(true);
我认为这实际上不是一个编码问题,而是一个哲学辩论的问题。就我个人而言,我会说任何do{something()},而(true)
-默认情况下,无论其内部工作方式如何,循环都是一个无止境的循环。是的。它看起来像是无止境的循环。值得一提的是:不要使用异常来控制代码流。如果希望它再次循环,请使用标志/返回值。例外仅适用于例外情况。我同意您的所有评论,但不是我的代码我正在检查应用程序,代码已经存在,我必须修复它。谢谢不是我的代码我正在检查应用程序,代码已经存在,我必须修复它。谢谢