Skip to main content
 首页 » 编程设计

python之用于更多描述性异常的异常设计模式

2025年04月02日12itcoder

<分区>

什么是向 Python 异常添加额外信息的好方法

例如 我有嵌套的字典

d = {'Bob':{'lastname':'Smith'}, 'Sally':{}} 

如果我像这样访问字典,我会得到我想要的姓氏

name = 'Bob' 
value = 'lastname' 
print(d[name][value]) 

Smith

如果我尝试访问 Sally 的姓氏,我也会得到我想要的,这是一个 KeyError

name = 'Sally' 
value = 'lastname' 
print(d[name][value]) 

KeyError: 'lastname'

但是我的问题是这个异常非常难以描述,所以我的代码现在看起来像这样

try: 
   name = 'Sally' 
   value = 'lastname' 
   print(d[name][value]) 
except KeyError: 
   raise KeyError("{0} has no {1}".format(name, value))  

KeyError: Sally has no lastname

这给了我正在寻找的描述性错误,但我想知道这个实现是否是 pythonic 的。有没有更好的表达方式?我已经尝试查看 python 文档和其他常用包,但没有发现至少我能看到的结论