插入字典会导致KeyError吗?

Can insertion in dictionary cause KeyError?

此代码是否会产生 KeyError?我是 python 的新手,只是想得到一些说明,因为我检查过插入不会导致 KeyError 异常。

def add(self, name, company):
    try:
        self.identity[self.id] = { 'name': name,
                                   'company': company }
        return self.identity
    except KeyError:
        raise NameNotAdded

此处 identity 是字典,id 是在其他地方初始化的 int,NameNotAdded是自定义异常。

在这种情况下没有任何理由抛出关于 KeyError 的异常。

A KeyError 一般表示密钥不存在。在您的情况下,您只需在字典中添加一个新键。

插入永远不会引发 KeyError,但如果您提供了错误的密钥,它会引发 TypeError,这通常意味着您正在尝试使用可变对象作为密钥。 Python 整数是不可变的,因此它们不会引发 TypeError

请注意,如果您尝试向 dict 添加太多项目,您将由于可用 RAM 不足而得到 MemoryError,或者由于您已尝试而得到 OverflowError超过集合的最大大小(可以从 sys.maxsize 读取)。但是没有必要费心去捕捉那些。 :)