我有一个每隔几秒钟查询一次 API 的程序。每个响应都会触发一些函数,这些函数本身会调用网站等——我不想盲目相信会成功的调用。例如,如果我在中捕获异常foo()
,甚至在foo()
调用的函数中捕获异常,是否可以完全在 except 块中重新启动程序?本质上,我想queryRepeatedly()
在其子函数之一中调用异常,而不将先前的调用保留在堆栈中。
当然,我可以返回标记值并以另一种方式解决这个问题,但是程序的结构使得上述方法看起来更简单、更清晰。
# Sample "main" function that I want to call
def queryRepeatedly():
while True:
foo()
bar()
baz()
time.sleep(15)
def foo():
# do something
try:
foo2() # makes a urllib2 call that I don't trust
except:
#restart queryRepeatedly
queryRepeatedly()
任何建议表示赞赏!谢谢。