Обработка исключений
Изучение обработки исключений в Python.
Обработка исключений
В этом занятии мы изучим, как обрабатывать ошибки (исключения) в Python. Исключения возникают, когда в программе происходит что-то неожиданное, например, деление на ноль или попытка открыть несуществующий файл. Обработка исключений позволяет программе корректно завершиться или продолжить работу, даже если произошла ошибка.
Блоки try и except
Для обработки исключений используются блоки try
и except
. Код, который может вызвать ошибку, помещается в блок try
, а код для обработки ошибки — в блок except
.
try:
x = 1 / 0 # Попытка деления на ноль
except ZeroDivisionError:
print("Ошибка: деление на ноль!")
Типы исключений
В Python есть множество встроенных типов исключений. Вот некоторые из них:
ZeroDivisionError
— деление на ноль.FileNotFoundError
— файл не найден.ValueError
— неверное значение (например, попытка преобразовать строку в число).TypeError
— несовместимые типы данных.IndexError
— обращение к несуществующему индексу списка.
Блок else
Блок else
выполняется, если в блоке try
не возникло исключений. Он полезен для кода, который должен выполняться только при успешном завершении блока try
.
try:
x = 10 / 2
except ZeroDivisionError:
print("Ошибка: деление на ноль!")
else:
print("Деление выполнено успешно:", x)
Блок finally
Блок finally
выполняется всегда, независимо от того, возникло исключение или нет. Он полезен для освобождения ресурсов, например, закрытия файлов.
try:
file = open("example.txt", "r")
content = file.read()
except FileNotFoundError:
print("Файл не найден!")
finally:
file.close() # Файл будет закрыт в любом случае
Создание собственных исключений
Вы можете создавать собственные исключения, чтобы обрабатывать специфические ошибки в вашей программе. Для этого нужно создать класс, унаследованный от Exception
.
class MyCustomError(Exception):
pass
try:
raise MyCustomError("Это моя ошибка!")
except MyCustomError as e:
print("Поймано исключение:", e)
Заключение
Теперь вы знаете, как обрабатывать исключения в Python. Попробуйте добавить обработку ошибок в свои программы, чтобы сделать их более устойчивыми. В следующем занятии мы изучим модули и пакеты.
Практика
🎯 Миссия 10: Стать мастером обработки ошибок🔍 Контекст: Идеальный код — как зонтик: должен выдерживать ливень багов!
⚙️ Техзадание:
1. Функция
divide_numbers()
: ловите ZeroDivisionError
2. Функция
get_value()
: обработайте KeyError
и TypeError
3. Создайте класс
NegativeValueError
4. Используйте
finally
в одном из методовdivide(10, 0) → "Не дели на ноль!" get_value({}, "x") → "Ключ не найден" set_age(-5) → "Возраст не может быть <0"
💡 Подсказка:
raise NegativeValueError()
Попробуйте на практике:
Результат:
Вопросы для закрепления
Вопросы для проверки усвоенного материала доступны зарегистрированным пользователям.