Допустим, мы имеем следующий код:Правильная степень блока обработки исключений
print("...")
might_throw_type_error()
print("...")
might_throw_index_error()
Если мы хотим, чтобы обрабатывать исключения, что эти функции могут возникнуть, что является предпочтительным способом:
Полное разделение "бизнес" и код обработки ошибок
try:
print("...")
might_throw_type_error()
print("...")
might_throw_index_error()
except IndexError:
# index error handling logic
raise
except TypeError:
# index error handling logic
raise
Разделение логики и обработки ошибок, но попробовать, начиная с первого оператора, который может поднять
print("...")
try:
might_throw_type_error()
print("...")
might_throw_index_error()
except IndexError:
# index error handling logic
raise
except TypeError:
# index error handling logic
raise
Обработка исключений следует обернуть только заявления, которые мы ожидаем, чтобы поднять
print("...")
try:
might_throw_type_error()
except TypeError:
# index error handling logic
raise
print("...")
try:
might_throw_index_error()
except IndexError:
# index error handling logic
raise
Обратите внимание, что если мы зафиксируем исключение, которое мы не хотим продолжать
Это довольно основанный на мнениях ... [codereview.se] может быть лучше подходит для таких вопросов. –
Счастливый, чтобы переместить его, задавая в случае, если есть «пифонический» ответ: $ –
На самом деле это не вопрос Пифонов, а вкуса. CodeReview, вероятно, скажет то же самое. – msw