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

如何将函数执行的所有结果(含错误)追加到列表中

如何将函数执行的所有结果(含错误)追加到列表中

这个需求在日常开发里挺常见的,咱们可以用Python的try-except语句完美解决,既能捕获你指定的错误类型,又能把正常结果和错误信息都收集到目标列表里。我给你一步步拆解实现方式:

基础实现方案

首先,咱们要明确需要捕获的错误类型(比如你提到的JSONDecodeError、IndexError),然后在循环里用try包裹函数调用,遇到指定错误时就把错误信息追加到列表里。

举个完整的代码例子:

# 注意:JSONDecodeError需要从json模块导入,像IndexError这类内置错误不用额外导入
from json import JSONDecodeError

# 初始化结果列表
result_list = []
# 你的输入值列表
values_list = [2, '{"name": "test"}', '[1,2,3]', "invalid_json_string", [1,2]]

# 示例函数,模拟可能抛出错误的场景
def func(value):
    if isinstance(value, str):
        import json
        return json.loads(value)  # 这里可能抛出JSONDecodeError
    elif isinstance(value, list):
        return value[5]  # 这里可能抛出IndexError
    else:
        return value * 2

# 遍历输入列表,收集结果和错误
for value in values_list:
    try:
        # 尝试执行函数,获取正常结果
        normal_result = func(value)
        result_list.append(normal_result)
    except (JSONDecodeError, IndexError) as err:
        # 捕获指定的错误,把错误对象或格式化信息追加到列表
        # 如果你只想存错误对象,直接append(err)就行;想存更友好的信息就格式化
        result_list.append(f"{type(err).__name__}: {str(err)}")

进阶优化:区分输入、结果和错误

如果后续需要更清晰地追踪每个输入对应的情况,建议把结果存成字典格式,这样能明确区分输入值、正常输出和错误信息,调试起来更方便:

for value in values_list:
    try:
        output = func(value)
        result_list.append({
            "input_value": value,
            "result": output,
            "error": None
        })
    except (JSONDecodeError, IndexError) as err:
        result_list.append({
            "input_value": value,
            "result": None,
            "error": f"{type(err).__name__}: {str(err)}"
        })

注意事项

  • 尽量明确指定要捕获的错误类型,不要直接用except Exception:(除非你确实需要捕获所有可能的错误),因为这样会意外捕获一些你不想处理的错误(比如KeyboardInterrupt),不利于排查问题;
  • 如果你的函数可能抛出更多类型的错误,只需要把对应的错误类加入except后面的元组里就行,比如except (JSONDecodeError, IndexError, KeyError) as err:。

备注:内容来源于stack exchange,提问作者french_fries

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:54:49