Python try except多分支异常处理失效,KeyError未被捕获求助
问题分析与解决方法
问题根源
字典中访问不存在的键时,Python抛出的是KeyError,你当前代码里第一个except分支捕获的是ValueError,导致异常无法被匹配处理,直接向外抛出。
修正后的代码
把捕获的异常类型改成KeyError即可:
try: scroll_token = response["scroll_token"] except KeyError as e: logging.info(f'could not find "scroll_token" {e}') try: scroll_token = response["scroll_id"] except KeyError as e: logging.info(f'could not find "scroll_id" {e}') # 可根据需求添加默认值或抛出自定义异常 # scroll_token = None # raise RuntimeError("No valid scroll token/id found")
更简洁的替代写法
如果不需要分别记录两种异常的日志,也可以用字典的get方法简化逻辑,避免嵌套try-except:
scroll_token = response.get("scroll_token") if scroll_token is None: scroll_token = response.get("scroll_id") if scroll_token is None: logging.info("Neither scroll_token nor scroll_id exists in response")
或者更紧凑的写法:
scroll_token = response.get("scroll_token") or response.get("scroll_id") if not scroll_token: logging.info("Neither scroll_token nor scroll_id exists in response")
内容的提问来源于stack exchange,提问作者KristiLuna
相关产品推荐
相关产品推荐

