在try-catch块中继续当前迭代| PHP

问题描述 投票:0回答:3

在我的脚本中,有时服务器,连接,配置或API问题,因此我实现了一个try-catch块来正确捕获异常并跳过它们。

...但是我的问题不能用此解决方案解决,因为引发问题的元素本身不是问题。 所以,基本上我的问题是是否有任何方法可以捕获错误并继续您所处的位置:不跳过错误并转到下一个元素,而是在foreach循环中重复当前的迭代。

很明显,继续中断不起作用!

foreach($xx as $x) {
    try {
        //main code
    } catch (Exception $e) {
        echo 'Caught exception: ', $e->getMessage(), "\n";
        sleep(10);
    }
}

...并且当catch部分捕获到错误时,代码应该使用当前的$ x(最初捕获错误/抛出错误)重复try循环,然后继续列出元素。] >

在我的脚本中,有时服务器,连接,配置或API问题,因此我实现了一个try-catch块来正确捕获异常并跳过它们。 ...但是我的问题没有解决...

php try-catch break continue
3个回答
0
投票

将try块放入其自己的while (true)循环中,如果成功,则可以break


0
投票

您可以运行for循环而不是foreach循环,并可以通过在catch块内递减计数器来管理递增计数器,以获取当前$ x(最初在该错误上捕获到错误/抛出了错误),然后再次使用相同的元素重试。它可能会导致无限循环,因此请保持任何重试阈值。


0
投票

一旦引发并捕获了异常,就无法返回到引发异常的代码块中。如此不幸的是,没有技术上的可能性,您只有一个try catch块,您可以在其中捕获所有异常,然后确定它们是否很重要(并停止执行脚本),或者异常不是一个真正的问题,并且您希望脚本表现为如果没有例外。

© www.soinside.com 2019 - 2024. All rights reserved.