You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历函数列表执行的Try/except异常捕获代码修复问题

问题根源

你的代码存在两个核心错误:

  • 定义list_functions = [func1(var), func2(var)]时就已经立即执行了两个函数,还没进入循环就会触发func1的报错,根本不会走到后续的遍历逻辑
  • 循环内的try块里只写了function,没有加括号执行函数调用,就算前面列表定义没有问题,这里也不会真的运行目标函数
修复方案

方案1:所有函数参数统一的场景

如果每个要执行的函数都只需要传入同一个var参数,可以直接把函数对象存入列表,循环时再调用:

# 仅存储函数对象本身,不要加括号提前调用
list_functions = [func1, func2]

for function in list_functions:
    try:
        # 循环内再执行函数调用
        function(var)
    except Exception:
        # 建议不要使用裸except,指定捕获的异常类型更安全
        pass
    else:
        break
else:
    raise Exception("No function succeeded.")

方案2:函数参数不统一的场景

如果不同函数需要传入不同参数,可以把函数和对应参数打包存入列表:

# 存储结构为(函数对象, 位置参数元组, 关键字参数字典)
list_functions = [
    (func1, (var1, var2), {"a": 1}),
    (func2, (var,), {}),
    (func3, tuple(), {"x": 2, "y": 3})
]

for func, args, kwargs in list_functions:
    try:
        func(*args, **kwargs)
    except Exception:
        pass
    else:
        break
else:
    raise Exception("No function succeeded.")

内容的提问来源于stack exchange,提问作者vojtam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:06:01