@link_vrb

Зачем могут понадобиться else и finally в конструкции try-except?

Зачем нужен else:
try:
    print(1+2)
except:
    print('Error')
else:
    print('1+2')

Если можно:
try:
    print(1+2)
    print('1+2')
except:
    print('Error')

И зачем нужен finally:
try:
    print(1+2)
except:
    print('Error')
finally:
    print('1+2')

Если можно:
try:
    print(1+2)
except:
    print('Error')
print('1+2')
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Рассмотрим два сценария:
try:
  foo()
  bar()
except:
  baz()

try:
  foo()
except:
  baz()
else:
  bar()

В первом случае baz() вызовется, если было выброшено исключение в foo() или в bar().
Во втором случае baz() вызовется, если было выброшено исключение в foo(), а исключения в bar() останутся необработанными.
В обоих случаях bar() вызовется только если foo() отработало без исключений.
Какой из двух способов применять, зависит от нужного тебе поведения.

Насчёт finally ответили выше. Обычно finally применяется в ситуациях, когда тебе обязательно нужно выполнить какое-то действие по окончании операции, независимо от её исхода. Например, если ты открыл файл, тебе обязательно нужно его закрыть, когда ты с ним больше не работаешь, и тому подобное.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы