我有以下代码。 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
子句,因为这是错误的做法。
答案 0 :(得分:1)
您可以在一行中捕获多种类型的错误。
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