如何解决在try / except子句中传递字典
我有一个用例,要求在Python 3.x的try / exception子句中传递字典
可以使用str()
函数以字符串形式访问错误消息,但是我不知道是谁将其作为字典。
try:
raise RuntimeError({'a':2})
except Exception as e:
error = e
print(error['a'])
e
是一个RuntimeError对象,我找不到任何以原始格式返回消息的方法。
解决方法
异常将其初始args存储在“ args”属性中:
try:
raise RuntimeError({'a':2})
except Exception as e:
(the_dict,) = e.args
print(the_dict["a"])
话虽如此,如果您想要一个具有结构化键/值上下文关联的异常类型,则最好为此目的定义自己的自定义异常子类,而不是重用标准库的RuntimeError
直。这是因为,如果捕获到此类异常并尝试解压缩字典上下文,则将需要以不同于标准库可能引发的RuntimeError
实例的方式检测和处理RuntimeError
实例。完全使用其他类型将使在代码中区分这两种情况变得更加简洁明了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。