Урок: Обработка ошибок и исключений
Обработка ошибок и исключений
Исключения в 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
вызывает это исключение, если переданное значение меньше нуля. Исключение перехватывается и выводится сообщение об ошибке.
Практическое задание
- Напишите программу, которая запрашивает у пользователя два числа и делит одно на другое. Обработайте исключение деления на ноль.
- Напишите программу, которая пытается открыть несуществующий файл и обрабатывает исключение
FileNotFoundError
. - Создайте собственное исключение
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
, а также создание собственных исключений. Практикуйтесь для лучшего понимания и освоения материала.