python - 在 try/except 子句中传递字典
问题描述
我有一个用例需要在 Python 3.x 的 try/exception 子句中传递字典
可以使用函数将错误消息作为字符串访问str()
,但我不知道是谁将其作为字典获取。
try:
raise RuntimeError({'a':2})
except Exception as e:
error = e
print(error['a'])
e
是一个 RuntimeError 对象,我找不到任何以原始格式返回消息的方法。
解决方案
异常将它们的 init args 存储在“args”属性中:
try:
raise RuntimeError({'a':2})
except Exception as e:
(the_dict,) = e.args
print(the_dict["a"])
话虽如此,如果您想要一个具有关联的结构化键/值上下文的异常类型,最好为此目的定义您自己的自定义异常子类,而不是RuntimeError
直接重用标准库的子类。这是因为如果您捕获此类异常并尝试解压缩字典上下文,您将需要以RuntimeError
不同于RuntimeError
标准库可能引发的实例的方式检测和处理您的实例。完全使用不同的类型将使您在代码中区分这两种情况变得更加清晰和容易。
推荐阅读
- python - Python多处理信号量不起作用
- javascript - 为每个项目设置一个值,除了通过不可变 JS 的项目
- tfs - 仅使用 TFS 应用层时,在哪里更改用户?
- ios - 如何在动态 tableView Swift 中删除行
- java - 强制 .equals() 覆盖的 Java 接口
- formatting - 在 Fortran 中完全表达双精度值的可移植格式是什么?
- javascript - 找到合适的时机访问从异步调用的数据创建的 DOM 元素
- react-native - 如何垂直拉伸列形式的两个视图 - React Native Flex?
- mysql - MySQL 索引和性能
- r - 在 R 中使用 combn 时保留非数字列