我在使用lookup(self, key)
提出的两个例外时遇到了困难。两者都是ValueError
例外,但意味着完全不同的东西。我如何分别捕获这些异常,因为它们是相同类型的异常,但在捕获它们时需要不同的行为?谢谢!Python捕捉异常
@staticmethod
def _lookup_in_child(child, key):
if child:
return child.lookup(key)
else:
raise ValueError("Key not in tree: " + repr(key))
def lookup(self, key):
if key is None:
raise ValueError("None cannot be used as a key")
if self.key is None:
raise ValueError("Key not in tree: " + repr(key))
if key < self.key:
return self._lookup_in_child(self.left, key)
elif key > self.key:
return self._lookup_in_child(self.right, key)
else:
return self
你是'lookup'方法的创造者吗?如果您可以将两个子类设置为“ValueError”并适当提高它们。 – metatoaster 2014-10-07 02:33:29
看起来好像“LookupError”对于“不在树中的密钥”错误是更好的选择。 – BrenBarn 2014-10-07 02:37:55
nope,我正在处理一个使用BinarySearchTree作为容器实现TreeDict的任务。我必须抓住这两个例外 – Jnk 2014-10-07 02:41:52