我一再被告知,对于像确定类型这样的操作,异常处理是不好的形式,因为异常总是计算上昂贵的。然而,我看到了一些帖子(特别是与Python相关的帖子,例如这个的回复),建议使用异常处理来实现这个目的。
那么,是否普遍应该避免抛出和捕获异常,因为它总是计算上昂贵的,还是有些语言,比如Python,更好地处理异常,并且可以更自由地使用异常处理呢?
那么,是否普遍应该避免抛出和捕获异常,因为它总是计算上昂贵的,还是有些语言,比如Python,更好地处理异常,并且可以更自由地使用异常处理呢?
您不能通用地建议所有编程语言都应避免异常,因为在Python中,异常的使用比其他语言(如C ++)更加自由。与原始性能不同,Python强调代码的可读性。有一种说法是“宁愿请求宽恕而不是事先获得许可”,意思是:尝试想要实现的内容并捕获异常要比先检查兼容性容易。
宽恕:
try:
do_something_with(dict["key"])
except (KeyError, TypeError):
# Oh well, there is no "key" in dict, or it has the wrong type
权限:
if hasattr(dict, "__getitem__") and "key" in dict:
do_something_with(dict["key"])
else:
# Oh well
实际上,在Python中,使用for
循环进行迭代是在幕后使用异常实现的:当到达末尾时,可迭代对象会引发StopIteration
异常。因此,即使你试图避免异常,你仍然会一直使用它们。