Назад к вопросам
Junior
103
questionbank

Какие конструкции для обработки исключений существуют в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Python для обработки исключений используются следующие конструкции:

  • try...except: Основа обработки исключений. Блок try содержит код, который может вызвать исключение. Если исключение возникает, выполняется соответствующий блок except.

    # Примеры использования try...except
    try:
        result = 10 / 0  # Попытка деления на ноль
    except ZeroDivisionError:
        print("Ошибка: Деление на ноль!")
    
  • except Exception as e: Ловит любое исключение и присваивает его объекту e для последующей обработки (например, логирования или вывода сообщения).

    # Перехват любого исключения
    try:
        value = int("abc")
    except Exception as e:
        print(f"Произошла ошибка: {e}")
    
  • Множественные except блоки: Позволяют обрабатывать разные типы исключений по-разному.

    # Обработка нескольких типов исключений
    try:
        file = open("non_existent_file.txt", "r")
        content = file.read()
        file.close()
    except FileNotFoundError:
        print("Ошибка: Файл не найден!")
    except IOError:
        print("Ошибка ввода/вывода!")
    
  • except (...): Объединение нескольких типов исключений в одном блоке.

    # Объединение типов исключений
    try:
        some_operation()
    except (ValueError, TypeError):
        print("Ошибка значения или типа!")
    
  • try...except...else: Блок else выполняется, если в блоке try не возникло исключений.

    # Использование else
    try:
        num1 = 10
        num2 = 2
        result = num1 / num2
    except ZeroDivisionError:
        print("Ошибка: Деление на ноль!")
    else:
        print(f"Результат деления: {result}")
    
  • try...except...finally: Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Используется для очистки ресурсов (например, закрытия файлов).

    # Использование finally
    file = None
    try:
        file = open("data.txt", "r")
        content = file.read()
    except FileNotFoundError:
        print("Файл не найден.")
    finally:
        if file:
            file.close()
            print("Файл закрыт.")
    
  • raise: Позволяет явно вызвать исключение.

    # Явное возбуждение исключения
    def validate_age(age):
        if age < 0:
            raise ValueError("Возраст не может быть отрицательным!")
        return age
    
    try:
        validate_age(-5)
    except ValueError as e:
        print(f"Ошибка валидации: {e}")