我在使用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