当我在编写代码时遇到不确定的问题,我会尝试再次阅读 The Zen of Python
。这一次,以下几行让我犹豫不决。
Errors should never pass silently.
Unless explicitly silenced.
目前的代码中,我有一些函数可能看起来像这样:
def add_v_1(a, b):
return a + b
所有涉及它们的调用都像这样:
c = add_v_1(7, [])
这样的代码异常会向上层传递并被捕获。
但是应该像这样吗?
add_v_1
可能会引发 TypeError
异常,我想从中恢复。
因此,可能调用函数的方式如下:
try:
c = add_v_1(7, [])
except TypeError:
print "Incorrect types!"
但是对于每个调用,我都需要进行异常处理。这看起来很繁琐。
所以,我可以这样做:
def add_v_2(a, b):
try:
return a + b
except TypeError:
print "Incorrect types!"
一个调用将会是:
c = add_v_2(7, [])
看起来更清晰。
似乎所有这些方法都遵循Python之禅,但其中哪一个是更好的选择呢?