在python中处理错误的最佳实践

问题描述 投票:0回答:1
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,但这更多的是让我学习 "更干净 "的方法。因此,我愿意接受所有的建议,以解释更干净和更正确的方法。

python
1个回答
1
投票

您可以在 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
© www.soinside.com 2019 - 2024. All rights reserved.