Если я не уверен в чем-то при написании кода, я еще раз хочу прочитать 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. – Hacketo
@Hacketo Что вы будете делать с текущим примером? –