python - 函数在错误处理中调用自身是Pythonic吗?

标签 python python-3.x error-handling

我有一个场景,如果满足特定条件,函数会在错误处理期间调用自身。像这样的东西:

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/

相关文章:

python - 从带有文件名和键的文件创建字典

python-3.x - 如何将 Mathematica 中的代码转换为 Python?

c - 使用无符号值返回错误?

c++ - 通过 DuplicateHandle 获取线程上下文?

python - 如何为 SQLAlchemy 引擎打开一个连接?

python - 以编程方式编辑表格以适应内容

python - Tkinter - 如何删除 ComboBox 小部件中的粗体文本和焦点?

python - 将一个列表中的特定行附加到另一个列表

python - Python 中的静态数组

java - 当csv值不存在时,如何使if语句正常工作?