use*_*850 1 python error-handling try-except
下面是我的代码片段,我想知道的是,假设如果函数 main2() 由于某种原因抛出错误,我如何让我的异常在它中断之前再次运行相同的函数 3 次?
只是在这里补充一下,任何函数都可能会抛出错误(不仅仅是 main2()),而且我可能不仅有 3 个函数,还有更多函数
import numpy as np
def main():
np.load('File.csv')
def main1():
np.load('File1.csv')
def main2():
np.load('File2.csv')
for i in range(1, 10):
try:
main()
main2()
main3()
except Exception as e:
print e
else:
break
Run Code Online (Sandbox Code Playgroud)
Fre*_*ik 7
你可以使用python 重试装饰器来做到这一点
@retry((Exception), tries=3, delay=0, backoff=0)
def main2():
np.load('File2.csv')
Run Code Online (Sandbox Code Playgroud)
这与您编写的方式相同:
error_counter = 0
def main2():
try:
np.load('File2.csv')
except:
if error_counter < 3
error_counter += 1
main2()
raise Exception("Will not try again, have tried 3 times")
error_counter = 0
Run Code Online (Sandbox Code Playgroud)
如果你想让它变得健壮和干净,你应该选择第一个解决方案。您可以在大型企业项目中重复使用的第一个解决方案,并且由于回退时间,它可以将磁盘负载、用户负载网络问题与回退/延迟时间考虑在内。
如果不使用时间延迟,您将在一秒钟内完成所有 3 次尝试。对于某些异常情况来说这很好,但是当遇到网络问题或磁盘问题时,您需要更复杂的解决方案。
另外,考虑不要捕获所有异常,缓存所有异常是一个不好的做法。更多信息,为什么不好
| 归档时间: |
|
| 查看次数: |
12379 次 |
| 最近记录: |