gpt4 book ai didi

php - 尝试、捕获和重试

转载 作者:IT王子 更新时间:2023-10-29 01:07:26 25 4
gpt4 key购买 nike

有时我的代码会崩溃,这是我无法控制的

我将如何执行以下操作?

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

代码并不多,所以都是一个函数,所以如果没有必要,我不想创建和调用另一个函数

最佳答案

你可以尝试这样的事情:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $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() 函数遇到错误,它将抛出一个 Exceptiontry...catch block 将捕获该错误。 catch block 会将变量 $attempt 递增 1,并调用 continue 来测试 while 条件下一次迭代。如果已经有五次尝试,循环将退出并且脚本可以继续。如果没有错误,即 catch block 中的 continue 语句未执行,则循环将中断,从而完成脚本。

请注意使用取自 hereset_error_handler 函数.我们这样做是为了捕获 executeCode() 函数中的所有错误,即使我们自己没有手动抛出错误也是如此。

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

让脚本无限运行直到成功不是一个好主意,因为循环的前 100 次迭代中出现的错误不太可能得到解决,从而导致脚本“卡住”向上。通常情况下,最好重新评估您希望在出现错误时多次运行的代码,并对其进行改进以正确处理出现的任何错误。

关于php - 尝试、捕获和重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com