【发布时间】:2016-06-12 04:38:22
【问题描述】:
如果我在编写一些代码时不确定某事,我会尝试再次阅读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, [])
看起来更干净。
似乎所有这些方法都遵循The Zen of Python,但其中哪一种是更好的选择?
【问题讨论】:
-
我会说这取决于你的情况,如果你在函数内部处理异常,你仍然必须在外部处理它,因为它会返回 None。
-
@Haketo 您将如何处理当前示例?
标签: python exception zen-of-python