Python中触发KeyError异常后如何继续执行try块内后续赋值语句
解决方案
核心思路是将每个可能触发KeyError的赋值逻辑拆分到独立的异常捕获块中,避免单个赋值失败阻断后续代码执行,提供两种实现方式:
方式1:单个赋值独立捕获(适合键数量少的场景)
直接给每个赋值操作单独套try-except,互不影响,和原有代码兼容性最高:
try: key1 = val1 except KeyError: pass try: key2 = val2 except KeyError: pass try: key3 = val3 except KeyError: pass # 所有赋值逻辑执行完后统一调用,和原有finally逻辑效果一致 createTask()
方式2:循环批量处理(适合键数量多的场景)
如果需要赋值的键较多,避免重复写冗余的捕获代码,可以把键值映射关系放在列表里循环处理:
# 示例场景:val1/val2/val3从同一个源字典source_dict中取值 source_dict = {"id": 1, "name": "test"} # 配置格式:(源字典的键名, 要赋值的变量名) assign_config = [ ("id", "key1"), ("age", "key2"), ("name", "key3") ] var_container = {} for src_key, var_name in assign_config: try: var_container[var_name] = source_dict[src_key] except KeyError: # 可根据需求设置默认值,比如 var_container[var_name] = None pass # 按需取出变量 key1 = var_container.get("key1") key2 = var_container.get("key2") key3 = var_container.get("key3") createTask()
内容的提问来源于stack exchange,提问作者vimedit
相关产品推荐
相关产品推荐

