Должен ли я проверить ifчто-то действительно или просто tryсделать это и поймать исключение?
- Есть ли надежная документация о том, что предпочтителен один из способов?
- Является ли один способ более питоническим ?
Например, я должен:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
Или:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
Некоторые мысли ...
20 человек говорит:
Ошибки никогда не должны проходить бесшумно.
Если явно не молчать.
Следует ли использовать tryвместо вместо ifинтерпретировать ошибку, как молчание? И если так, вы явно заставляете его замолчать, используя его таким образом, поэтому делаете это нормально?
Я не имею в виду ситуации, когда вы можете делать вещи только в одном направлении; например:
try:
import foo
except ImportError:
import baz
if index in mylistИндекс тестов является элементом mylist, а не возможным индексом. Вы бы хотелиif index < len(mylist)вместо этого.