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