我想返回KeyError而不是None

时间:2017-03-04 23:24:24

标签: python python-3.x

我想返回KeyError,而是返回None。我不明白为什么。

if index == self.length or self.slots[index]==None:
    raise KeyError

1 个答案:

答案 0 :(得分:0)

您没有提高 KeyError因为您没有进入if - 分支。并且您没有输入if - 分支,因为您的条件都不是true

如果测试用例(您没有显示!)确实应该提升KeyError,则可能需要调整条件。

要调试此问题,您可以插入一些print - 语句:

print(index, self.length, index==self.length)
print(self.slots[index], self.slots[index]==None)
if index == self.length or self.slots[index]==None:
    raise KeyError

或使用您选择的调试器。

然而有些意见:

  • 通常您要检查索引是否为>=长度(包括==!)。
  • 您应该使用Noneis进行比较。 NoneNotImplemented是有保证的单身人士。
  • KeyError中使用例外消息,例如raise KeyError('index out of bounds or item is None! Try again.')
  • 没有点击明确return的功能将返回None。这可能是您的代码返回None的原因!