首页 > 解决方案 > Python:捕获两个异常之一

问题描述

我有以下一段代码。article_as_dict是我从外部来源收到的字典:

final_dict["short_title"] = article_as_dict["short_title"]
try:
    final_dict["picture_url"] = article_as_dict["main_image"]["img"][-1]["link"]
except IndexError:
    final_dict["picture_url"] = None

我最近发现我还需要考虑一个可能的问题KeyError,下面的块是最pythonic的方法吗?

final_dict["short_title"] = article_as_dict["short_title"]
try:
    final_dict["picture_url"] = article_as_dict["main_image"]["img"][-1]["link"]
except IndexError:
    final_dict["picture_url"] = None
except KeyError:
    final_dict["picture_url"] = None    

我不想要一个裸except条款,因为这是不好的做法。

标签: pythontry-catch

解决方案


您可以在一行中捕获多种类型的错误。

来自Python 文档

except 子句可以将多个异常命名为带括号的元组

像这样捕捉你的错误会更加pythonic:

except (IndexError, KeyError)...


推荐阅读