我很难处理lookup(self, key)
提出的两个异常。两者都是ValueError
例外,但含义完全不同。由于这些异常是同一类型的异常,但在捕获它们时需要不同的行为,因此如何分别捕获这些异常?谢谢!你知道吗
@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之前,不能检查键是否为None吗?假设您需要捕获异常,下面的代码将执行此操作,然后您可以根据特定的异常情况添加所需的任何逻辑:
实现者显然认为这两个错误条件的处理方式是相同的,没有理由添加一些东西来区分它们。将此与包含数字代码的
IOError
进行对比。它是黑客和脆弱的,但你可以通过窥视异常对象上的message属性来分辨区别。你知道吗相关问题 更多 >
编程相关推荐