php – 尝试,抓住并重试

前端之家收集整理的这篇文章主要介绍了php – 尝试,抓住并重试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有时我的代码中断,这是我无法控制的

我将如何进行以下操作?

try {
//do my stuff
}
catch {
//sleep and try again
}

代码不是那么多,所以这是一个功能,所以我不想做和调用另一个功能,如果我不必

你可以尝试这样的:
function exception_error_handler($errno,$errstr,$errfile,$errline ) {
    throw new ErrorException($errstr,$errno,$errline);
}
set_error_handler("exception_error_handler");

$NUM_OF_ATTEMPTS = 5;
$attempts = 0;

do {

    try
    {
        executeCode();
    } catch (Exception $e) {
        $attempts++;
        sleep(1);
        continue;
    }

    break;

} while($attempts < $NUM_OF_ATTEMPTS);

function executeCode(){
    echo "Hello world!";
}

在这里,我们执行一个do … while循环,以便至少执行一次代码.如果executeCode()函数遇到错误,它将抛出一个Exception,try … catch块将捕获. catch块然后将变量$尝试增加1,并调用continue继续测试下一次迭代的while条件.如果已经有五次尝试,循环将退出,脚本可以继续.如果没有错误,即catch块中的continue语句不执行,循环将中断,从而完成脚本.

注意使用从here获取的set_error_handler函数.我们这样做,以便捕获executeCode()函数中的所有错误,即使我们不自己手动抛出错误.

如果您认为您的代码可能会失败多次,那么sleep()函数在continue语句之前可能是有益的.降低可能无限循环的“下降”将有助于降低cpu使用率.

让脚本无限运行,直到成功,这不是一个好主意,因为循环前100次迭代中出现的错误不太可能被解决,从而导致脚本“冻结”.更重要的是,最好在错误的情况下重新评估您想要多次运行的代码,并改进它以正确处理任何出现错误代码.

原文链接:https://www.f2er.com/php/139759.html

猜你在找的PHP相关文章