try: msg_json = json.loads(message_string) if "task" in msg_json: job_type = msg_json["task"] return (job_type, msg_json) logger.error( "Could not parse message: must provide 'task' property", extra={"message_string": message_string}, ) return emptyexcept Exception: logger.exception( "Error parsing JSON message. Did you accidentally double-escape it?", extra={"message_string": message_string}, ) return empty我有这段代码,我试图加载一些 JSON 格式的消息字符串。回顾这段代码后,我觉得我可能以错误的方式使用 try 和 catch,并且我正在寻找建议,因为我是 python 的新手,可能会有更简洁的方法。这里没有错误,但这对我来说更像是学习“更清洁”的方法。因此,我愿意接受所有解释更清晰、更正确方法的建议。
1 回答

largeQ
TA贡献2039条经验 获得超7个赞
您可以在catch块中处理这两种错误情况,这使您的“快乐路径”代码更清晰一些,并将所有错误处理整齐地分组在一个地方:
try:
msg_json = json.loads(message_string)
return (msg_json["task"], msg_json)
except KeyError:
logger.error(
"Could not parse message: must provide 'task' property",
extra={"message_string": message_string},
)
return empty
except Exception:
logger.exception(
"Error parsing JSON message. Did you accidentally double-escape it?",
extra={"message_string": message_string},
)
return empty
添加回答
举报
0/150
提交
取消