Ответ
Блоки try, except, else и finally в Python используются для обработки исключений, позволяя программе корректно реагировать на ошибки и продолжать выполнение или выполнять очистку ресурсов.
Почему используются: Это позволяет изолировать потенциально проблемный код, перехватывать и обрабатывать конкретные ошибки, а также гарантировать выполнение определённого кода независимо от возникновения исключений.
Описание блоков:
try: Содержит код, который может вызвать исключение. Если исключение возникает, выполнениеtryнемедленно прекращается, и управление передаётся в соответствующий блокexcept.except: Выполняется, если в блокеtryвозникло исключение. Можно указать конкретный тип исключения для перехвата (например,except ZeroDivisionError:), или перехватить все исключения (except Exception as e:).else: Выполняется только в том случае, если код в блокеtryзавершился без каких-либо исключений. Это полезно для кода, который должен выполняться только при успешном исходеtry.finally: Выполняется всегда, независимо от того, возникло ли исключение вtryили нет, и было ли оно перехвачено. Этот блок часто используется для освобождения ресурсов (например, закрытие файлов, сетевых соединений).
Пример:
def divide_numbers(a, b):
try:
result = a / b # Потенциально может вызвать ZeroDivisionError
except ZeroDivisionError:
print("Ошибка: Деление на ноль невозможно.")
return None
except TypeError:
print("Ошибка: Некорректные типы данных для деления.")
return None
else:
print(f"Деление успешно. Результат: {result}")
return result
finally:
print("Блок finally всегда выполняется (очистка ресурсов, если нужно).")
print("--- Пример 1: Успешное выполнение ---")
divide_numbers(10, 2)
print("n--- Пример 2: Деление на ноль ---")
divide_numbers(10, 0)
print("n--- Пример 3: Некорректные типы ---")
divide_numbers(10, "два")
Порядок выполнения:
try→ нет ошибки →else→finallytry→ ошибка →except→finally- Если исключение не перехвачено ни одним
exceptблоком,finallyвсё равно выполнится, а затем исключение будет распространено дальше.