Обработка исключений: try-except

Обработка исключений — важный аспект программирования, позволяющий справляться с ошибками, которые могут возникнуть во время выполнения программы. В Python для этой цели используется конструкция try-except. Этот механизм позволяет "ловить" исключения и обрабатывать их, не прерывая выполнение программы.

Цель этого урока — познакомить вас с основами обработки исключений в Python, научить использовать конструкцию try-except и показать, как обрабатывать различные типы исключений.

1. Что такое исключение?

Исключение — это ошибка, которая возникает во время выполнения программы. Когда происходит исключение, нормальное выполнение программы прерывается, и Python ищет обработчик для этого исключения. Если обработчик не найден, программа завершает выполнение и выводит сообщение об ошибке (трейсбэк).

Примеры распространенных исключений: - ZeroDivisionError: деление на ноль - ValueError: некорректное значение - TypeError: некорректный тип данных - FileNotFoundError: файл не найден

2. Основы конструкции try-except

Конструкция try-except позволяет перехватывать исключения и обрабатывать их. Основной синтаксис выглядит следующим образом:

try:
    # Код, который может вызвать исключение
    risky_code()
except ExceptionType:
    # Код, который выполняется при возникновении исключения
    handle_exception()

Пример:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Деление на ноль невозможно!")

3. Обработка конкретных исключений

Вы можете обрабатывать разные типы исключений с помощью нескольких блоков except.

Пример:

try:
    value = int(input("Введите число: "))
    result = 10 / value
except ValueError:
    print("Некорректный ввод! Пожалуйста, введите число.")
except ZeroDivisionError:
    print("Деление на ноль невозможно!")

4. Использование блока else

Блок else выполняется, если в блоке try не возникло исключений.

Пример:

try:
    value = int(input("Введите число: "))
    result = 10 / value
except ValueError:
    print("Некорректный ввод! Пожалуйста, введите число.")
except ZeroDivisionError:
    print("Деление на ноль невозможно!")
else:
    print(f"Результат: {result}")

5. Использование блока finally

Блок finally выполняется в любом случае, независимо от того, произошло исключение или нет. Он часто используется для освобождения ресурсов, таких как файлы или сетевые соединения.

Пример:

try:
    file = open("example.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("Файл не найден!")
else:
    print(content)
finally:
    file.close()
    print("Файл закрыт.")

6. Создание пользовательских исключений

Вы можете создавать свои собственные исключения, наследуя классы от Exception.

Пример:

class CustomError(Exception):
    pass

def risky_function():
    raise CustomError("Произошла ошибка в risky_function!")

try:
    risky_function()
except CustomError as e:
    print(f"Поймано пользовательское исключение: {e}")

Обработка исключений — важная часть разработки надежных программ. Конструкция try-except позволяет справляться с ошибками и предотвращать неожиданное завершение программы. Понимание и умение правильно использовать этот механизм делает ваш код более устойчивым и готовым к обработке непредвиденных ситуаций.