Python:捕获两个异常之一

时间:2018-08-06 19:32:00

标签: python try-catch

我有以下代码。 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,是执行此操作的最Python方式下面的代码块吗?

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子句,因为这是错误的做法。

2 个答案:

答案 0 :(得分:1)

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

来自Python Documentation

  

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

像这样捕获您的错误会更pythonic:

except (IndexError, KeyError)...

答案 1 :(得分:1)

您可以在一行中捕获多个异常;

final_dict["short_title"] = article_as_dict["short_title"]
try:
    final_dict["picture_url"] = article_as_dict["main_image"]["img"][-1]["link"]
except (IndexError, KeyError) as e:
    final_dict["picture_url"] = None