May 29, 2024

Урок: Обработка ошибок и исключений

Обработка ошибок и исключений

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

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

Исключения возникают, когда происходит ошибка во время выполнения программы. Вместо того чтобы программа завершилась с ошибкой, мы можем перехватить и обработать это исключение.

Пример обработки исключений
try:
    result = 10 / 0
except ZeroDivisionError:
    print("Деление на ноль невозможно.")

В этом примере выполняется деление на ноль, что вызывает исключение ZeroDivisionError. Это исключение перехватывается блоком except, и выводится сообщение "Деление на ноль невозможно."

Использование try, except, finally

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

Пример использования try, except и finally
try:
    file = open("example.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("Файл не найден.")
finally:
    file.close()
    print("Файл закрыт.")

В этом примере пытается открыться и прочитаться файл example.txt. Если файл не найден, возникает исключение FileNotFoundError, которое перехватывается и обрабатывается. Независимо от того, произошло исключение или нет, файл закрывается в блоке finally.

Создание собственных исключений

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

Пример создания собственного исключения
class CustomError(Exception):
    def __init__(self, message):
        self.message = message

# Пример использования собственного исключения
def check_value(value):
    if value < 0:
        raise CustomError("Значение не может быть отрицательным.")

try:
    check_value(-5)
except CustomError as e:
    print(f"Произошла ошибка: {e.message}")

В этом примере создается собственное исключение CustomError, которое наследует Exception. Функция check_value вызывает это исключение, если переданное значение меньше нуля. Исключение перехватывается и выводится сообщение об ошибке.

Практическое задание

  1. Напишите программу, которая запрашивает у пользователя два числа и делит одно на другое. Обработайте исключение деления на ноль.
  2. Напишите программу, которая пытается открыть несуществующий файл и обрабатывает исключение FileNotFoundError.
  3. Создайте собственное исключение NegativeNumberError, которое вызывается, если переданное значение отрицательное. Обработайте это исключение в функции.
Пример выполнения практического задания

# Задание 1
try:
    num1 = float(input("Введите первое число: "))
    num2 = float(input("Введите второе число: "))
    result = num1 / num2
    print(f"Результат: {result}")
except ZeroDivisionError:
    print("Ошибка: деление на ноль невозможно.")

# Задание 2
try:
    file = open("non_existent_file.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("Ошибка: файл не найден.")

# Задание 3
class NegativeNumberError(Exception):
    def __init__(self, message):
        self.message = message

def check_positive(value):
    if value < 0:
        raise NegativeNumberError("Значение не может быть отрицательным.")

try:
    check_positive(-10)
except NegativeNumberError as e:
    print(f"Произошла ошибка: {e.message}")

В первом задании программа запрашивает два числа у пользователя и делит одно на другое, обрабатывая исключение деления на ноль. Во втором задании программа пытается открыть несуществующий файл и обрабатывает исключение FileNotFoundError. В третьем задании создается собственное исключение NegativeNumberError, которое вызывается, если переданное значение отрицательное, и это исключение обрабатывается в функции check_positive.

Этот урок охватывает основы обработки исключений в Python, включая использование try, except и finally, а также создание собственных исключений. Практикуйтесь для лучшего понимания и освоения материала.