Стратегия try except для начинающих Python – Простой отладочный инструмент с помощью обработки исключений!
Если вы только начали изучать Python, то при встрече с конструкцией try except
можете растеряться. "Какое имя класса нужно запомнить?", "Когда я должен это использовать?" – такие мысли могут возникнуть. В этой статье мы пошагово объясним основные концепции обработки исключений в Python и стратегию try except для новичков.
Почему важно обрабатывать исключения в Python?
При выполнении кода он не всегда работает так, как ожидается. Пользователь может ввести неверные данные, файл может отсутствовать, сеть может обрываться... Если в такие моменты программа просто остановится, это испортит пользовательский опыт.
Именно в таких ситуациях становится необходимой конструкция обработки исключений Python (try except).
Цель обработки исключений – всего лишь одна: обеспечить безопасное продолжение работы программы даже при возникновении ошибок.
Как выглядит конструкция try except?
try:
# Код, в котором может возникнуть ошибка
except класс_исключения as e:
# Действия при возникновении ошибки
Пример:
try:
result = 10 / 0
except ZeroDivisionError as e:
print("Нельзя делить на 0:", e)
Ключевым здесь является ZeroDivisionError
– это класс исключений, который является «ярлыком», указывающим, какого именно рода ошибка произошла.
Что такое классы исключений и нужно ли их запоминать?
Многие начинающие программисты Python задают такой вопрос:
"Все эти классы исключений, нужно ли их запоминать?"
Ответ: Нет!
На самом деле разработчики не запоминают все классы исключений. Вместо этого они привыкают к нескольким чаще используемым классам исключений, а для остальных обращаются к сообщениям об ошибках при возникновении проблем.
Пример:
FileNotFoundError: [Errno 2] Не такой файл или каталог: 'none.txt'
В таком случае можно написать:
except FileNotFoundError:
Вот и всё.
Топ-7 классов исключений Python
Класс исключений | Когда возникает? |
---|---|
ValueError |
Когда значение неверно |
TypeError |
Когда типы не совпадают |
IndexError |
Когда выход за пределы списка |
KeyError |
Когда ключа нет в словаре |
ZeroDivisionError |
Когда деление на 0 |
FileNotFoundError |
Когда файла нет |
Exception |
Родитель всех обычных ошибок |
Запомнив эти классы, вы сможете справиться с большинством ситуаций, связанных с обработкой исключений в Python.
Так знакомьтесь со структурой try except!
- Если не знаете, оберните в Exception.
try:
dangerous_code()
except Exception as e:
print("Произошла проблема:", e)
-
Изучите нужный класс исключений, исходя из сообщения об ошибке.
-
Доверьтесь автозаполнению вашего IDE (редактора кода). Обычно оно предлагает разумные варианты.
-
Если вы сталкиваетесь с одной и той же проблемой несколько раз, вы естественным образом её запомните.
Обработка исключений – друг отладки
Обработка исключений в Python – это не просто инструмент для предотвращения ошибок, а мощный инструмент для отслеживания ошибок и нахождения их причин.
Сообщения об исключениях обычно выглядят так:
Traceback (most recent call last):
File "main.py", line 2, in <module>
x = 10 / 0
ZeroDivisionError: division by zero
С них можно узнать имя файла, номер строки и тип ошибки. Таким образом, если хорошо использовать обработку исключений, отладка становится проще.
Дополнительный класс исключений – StopIteration
StopIteration
– это исключение, которое возникает, когда итерируемый объект (итератор) больше не может возвращать элементы. Обычно оно обрабатывается автоматически в обычном цикле for
, поэтому вам не нужно об этом беспокоиться, но при использовании функции next()
иногда вам нужно будет работать с ним вручную.
Пример:
it = iter([1, 2])
print(next(it)) # 1
print(next(it)) # 2
print(next(it)) # Возникновение StopIteration
Или в следующем коде:
try:
category = next(cat for cat in all_categories if cat.slug == category_slug)
except StopIteration:
pass # Ничего не делаем
В этом случае оно используется для того, чтобы пропускать, если категория с данным slug отсутствует. Это минимальная защита от остановки потока кода.
Заключение – Обработка исключений в Python, поначалу сложно, но быстро привыкаешь
Не обязательно запоминать все классы исключений с первых дней или осуществлять идеальную обработку исключений. Вместо этого осознайте проблемные ситуации, оберните их в try except
и начните анализировать сообщения об ошибках.
Обработка исключений в Python делает программу более устойчивой и впоследствии облегчает отладку. Для новичка важнее выживаемость в реальных ситуациях, чем совершенство. try except
будет вашим первым шагом в этом!
В следующей части мы также обсудим структуру try except else finally
для расширенной обработки исключений! 😊
댓글이 없습니다.