[英]Python catch exception
我在处理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
我不太确定您要完成什么。 例如,您不能在调用查找之前检查键是否为None吗? 假设您需要捕获异常,下面将进行处理,然后您可以根据特定的异常情况添加所需的任何逻辑:
try:
lookup(key)
except ValueError, e:
if str(e) == 'None cannot be used as a key':
print 'None case'
elif str(e).startswith('Key not in tree:'):
print 'Nonexistent case'
else:
print 'Default case'
实施者显然认为这两个错误条件将被相同地处理,并且没有理由添加一些东西来区分它们。 将此与IOError
(其中包含数字代码)进行对比。 它虽然很脆弱而且很脆弱,但是您可以通过查看异常对象上的message属性来区分它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.