python - KeyError 异常的值用单引号括起来
问题描述
为了提供更好的 API 错误,KeyError
如果 API 请求中缺少特定键,我会引发异常。
user = {
"id": 1234,
"name": "John Doe"
}
try:
user.pop("id") // for example purpose
user_id = user["id"]
print(user_id)
except KeyError as e:
key_error_message = {
"id": "Key 'id' is missing",
"name": "Key 'name' is missing"
}
print(e) # 'id'
print(type(e)) # <class 'KeyError'>
print(str(e)) # 'id'
print(type(str(e))) # <class 'str'>
print(key_error_message.get(str(e))) # None
print(key_error_message.get(str(e).replace("'", ""))) # Key 'id' is missing
我想知道为什么'
在尝试访问 KeyError 的值时必须删除单引号?有没有更好的方法来做到这一点?
我知道使用方法肯定有更好的.get()
方法,dict
但这是我的代码中的实际行为,我不想完全重构它。
解决方案
使用该args
字段访问导致异常的键名:
try:
....
except KeyError as e:
missing_key = e.args[0]
print(f"Key '{missing_key}' is missing")
推荐阅读
- admob - Google Ads 在 Xamarin 应用中的展示率非常低
- shortcut - Dr. Java System.out.println 快捷方式
- ios - 本地化设置不会更改 Swift 4.2 中的系统定义文本
- symfony - 如何在 findOneBy 方法中使用请求发布数据
- python - Python - 合并文件/合并文件
- node.js - 如何在 nodejs aws-sdk 模块中设置多个 aws 凭据?
- python - pytest 获取运行时函数测试变量
- sql - 计算在另一个表中找到(或未找到)具有重复值的记录中的某些字段的次数
- angular - NativeScript - 使用 RadForms 时如何检查表单的有效性?
- istio - Istio 特使代理记录丢失的文件