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 empty
except Exception:
logger.exception(
"Error parsing JSON message. Did you accidentally double-escape it?",
extra={"message_string": message_string},
)
return empty
我有这样一段代码,我试图加载一些JSON格式的消息字符串。在回看这段代码后,我觉得我可能用错了try and catch的方式,我在寻找建议,因为我是python新手,可能有更干净的方法。这里没有bug,但这更多的是让我学习 "更干净 "的方法。因此,我愿意接受所有的建议,以解释更干净和更正确的方法。
您可以在 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