此代码是否会产生KeyError?我是python的新手,只是想要一些澄清,因为我检查插入不会导致KeyError异常。
def add(self, name, company):
try:
self.identity[self.id] = { 'name': name,
'company': company }
return self.identity
except KeyError:
raise NameNotAdded
此处标识是一个字典, id 是在其他地方初始化的int, NameNotAdded 是自定义异常。
答案 0 :(得分:3)
在这种情况下没有任何理由抛出关于KeyError
的异常。
KeyError
通常表示密钥不存在。在您的情况下,您只需在字典中添加一个新密钥。
答案 1 :(得分:2)
插入永远不会引发KeyError
,但如果您提供了错误的密钥,它可能会引发TypeError
,这通常意味着您尝试使用可变对象作为密钥。 Python整数是不可变的,所以他们不会提出TypeError
。
请注意,如果您尝试向dict
添加太多项目,由于缺少可用内存,您将获得MemoryError
,或者因为您尝试过OverflowError
超过集合的最大大小(可以从sys.maxsize
读取)。但是,抓住这些并没有太大的困难。 :)