【发布时间】:2020-03-01 12:50:12
【问题描述】:
我有一个每隔几秒查询一次 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()
欢迎提出任何建议!谢谢。
【问题讨论】:
-
异常情况下调用
queryRepeatedly() -
@GrijeshChauhan 将使用干净的堆栈执行?
-
不,从
foo调用queryRepeatedly会导致堆栈随着每个异常抛出而增长,直到内存不足。