我有一个场景,如果满足特定条件,函数会在错误处理期间调用自身。像这样的东西:
def test(param):
# code
try:
# attempt
except ValueError as e:
if (x):
test(param+1)
我注意到,如果我陷入 excepts
循环并尝试用键盘取消,我会得到一个巨大的堆栈跟踪。这似乎不对。
有没有更好的方法来处理这个问题?
编辑:
运行一段时间后,我得到:
RecursionError:调用 Python 对象时超出最大递归深度
我不确定它是否相关,但我想递归函数调用过多会引起递归深度问题?
最佳答案
这是一种在失败时重复操作的方法,无需使用递归。
def dostuff(param):
while True:
# code
try:
# attempt
except ValueError:
if x:
param += 1
continue
break
这样,如果 attempt
成功后,循环就会中断。但如果它引发 ValueError
,如果您的x
条件(无论是什么)为真,则循环体将重复 param
增加 1。
关于python - 函数在错误处理中调用自身是Pythonic吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572999/