在我的脚本中,有时会出现服务器、连接、配置或API问题,因此我实现了一个try-catch块来正确捕获异常并跳过它们。
...但我的问题没有用这个解决方案解决,因为(引发问题的)元素不是问题本身。所以基本上,我的问题是,是否有任何方法可以捕获错误并继续您离开的地方:不跳过错误并转到下一个元素,而是在foreach循环中重复当前的迭代。
显然,继续和打破是行不通的!
foreach($xx as $x) {
try {
//main code
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
sleep(10);
}
}
...并且当catch部分捕获到错误时,代码应该使用当前的$X(它最初在该$X上捕获错误/抛出错误)重复try循环,然后继续元素列表。
将try块放入它自己的while(true)
循环中,成功时您可以中断
:
while (true) {
try {
...
break;
} catch (...) {
...
}
}
这将重试相同的操作,直到没有引发异常为止。为了避免操作上无休止的循环,您可以添加一个计数器,如:
$tries = 0;
while ($tries < 10) {
$tries++;
try { ... }
}
EDIT应该返回true或false,但它的抛出错误
问题内容: 我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下 但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示: 我希望有人能够解释为什么
问题内容: 一旦在此代码中捕获到异常,该方法就会运行,但是一旦我输入一个数字,程序就会关闭,并显示“生成成功”消息。一旦发生异常,是否有任何方法可以返回while循环? 问题答案: 将 try / catch 放入 while循环中 :
问题内容: 在PHP 5中使用try-catch语句时,要考虑什么样的性能影响? 以前,我已经在网上阅读了一些有关该主题的古老的,看似矛盾的信息。我目前必须使用的许多框架都是在php 4上创建的,并且缺少php 5的许多优点。因此,我在使用try-catchs与php方面经验不足。 问题答案: 要考虑的一件事是,没有引发异常的try块的开销与实际引发和捕获异常的开销是一个不同的问题。 如果仅在失败
问题内容: 我正在审查一些新代码。该程序仅具有try和finally块。由于不包含catch块,如果try块遇到异常或任何可抛出的异常,它将如何工作?它是否直接进入了finally块? 问题答案: 如果try块中的任何代码都可以引发已检查的异常,则它必须出现在方法签名的throws子句中。如果引发了未经检查的异常,则该异常会冒泡退出方法。 无论是否引发异常,都始终执行finally块。