Загрузка...

Коды ошибок Python

Коды ошибок Python представляют собой исключения, возникающие при выполнении некорректных или недопустимых операций в программе. Понимание этих ошибок крайне важно для разработки стабильных и надежных систем, так как позволяет быстро находить источник сбоев, исправлять ошибки и внедрять эффективные решения. Ошибки могут возникать во время разработки при нарушении синтаксиса, использовании неверных типов данных, обращении к несуществующим ресурсам или некорректной логике программы. Ключевые концепции включают синтаксис, типы исключений, методы отладки и обработку ошибок. Этот справочник предоставляет полный перечень наиболее распространенных ошибок Python, описывает условия их возникновения, демонстрирует практические примеры и лучшие методы обработки. Читатель научится выявлять, перехватывать и исправлять ошибки, а также применять продвинутые стратегии отладки, повышающие надежность и устойчивость бэкенд-приложений.

Рассмотрим практический пример: система, которая обрабатывает пользовательский ввод, считывает файлы и подключается к базе данных. В таких случаях могут возникать ошибки, такие как FileNotFoundError, ValueError или ZeroDivisionError. Для обеспечения надежности критические операции помещаются в блоки try, а каждое исключение обрабатывается в соответствующих блоках except. Это позволяет корректно реагировать на каждую ошибку, вести логирование и применять альтернативные решения. Блок finally гарантирует освобождение ресурсов, таких как файлы или соединения с базой данных, даже при возникновении ошибок. Такой подход предотвращает неожиданные сбои, повышает сопровождаемость кода и обеспечивает стабильную работу бэкенд-систем в производственной среде.

Example

python
PYTHON Code
def process_data():
try:
# NameError: использование несуществующей переменной
print(неопределенная_переменная)

# ZeroDivisionError: деление на ноль
результат = 10 / 0

# ValueError: некорректное преобразование
число = int("abc")

# FileNotFoundError: файл не найден
with open("не_существующий_файл.txt", "r") as f:
содержимое = f.read()

# AttributeError: вызов несуществующего метода
[].appendx(1)

except NameError as ne:
print(f"Перехвачено NameError: {ne}")
except ZeroDivisionError as zde:
print(f"Перехвачено ZeroDivisionError: {zde}")
except ValueError as ve:
print(f"Перехвачено ValueError: {ve}")
except FileNotFoundError as fe:
print(f"Перехвачено FileNotFoundError: {fe}")
except AttributeError as ae:
print(f"Перехвачено AttributeError: {ae}")
except Exception as e:
print(f"Перехвачено другое исключение: {e}")
finally:
print("Очистка ресурсов завершена.")

process_data()

📊 Comprehensive Reference

Error Описание Когда возникает Пример Примечания
SyntaxError Синтаксическая ошибка Неверный код eval('x === 2') Происходит на этапе компиляции
IndentationError Ошибка отступов Неправильная индентация if True:\nprint("Привет") Подтип SyntaxError
TabError Смешение табуляции и пробелов Использование табов и пробелов вместе <tab> <space> print("Привет") Необходим единообразный отступ
NameError Неопределённая переменная Использование несуществующей переменной print(x) Частая ошибка при отладке
TypeError Неверный тип Операция с несоответствующим типом 5 + "5" Python динамически типизирован
ValueError Неверное значение Некорректное преобразование или значение int("abc") Проверка входных данных
IndexError Индекс вне диапазона Доступ к несуществующему индексу lst = []; lst[1] Проверка длины списка
KeyError Ключ отсутствует Доступ к несуществующему ключу словаря d = {}; d['x'] Использовать dict.get() для безопасности
AttributeError Отсутствие атрибута Вызов несуществующего метода [].appendx(1) Проверка имени метода
ZeroDivisionError Деление на ноль Делитель равен нулю 10 / 0 Проверка делителя
ImportError Модуль не найден Отсутствие модуля import модуль_не_существует Проверка установки
ModuleNotFoundError Модуль не найден Отсутствие модуля import не_существует Python 3.6+
FileNotFoundError Файл не найден Отсутствие файла open("не_существует.txt") Проверка пути
IsADirectoryError Ожидался файл, получен каталог Открытие каталога open("папка") Зависит от ОС
NotADirectoryError Ожидался каталог, получен файл os.listdir("файл.txt") Зависит от ОС
PermissionError Недостаточно прав Отказ в доступе open("/root/file") Проверка прав
OSError Ошибка системы Проблема с ОС os.remove("/root/file") Базовый класс для других ошибок
OverflowError Переполнение Слишком большое значение 2.0**10000 Редко в Python 3
RecursionError Слишком глубокая рекурсия Много рекурсивных вызовов def f(): f(); f() sys.setrecursionlimit()
MemoryError Недостаток памяти Очень большие данные a = 'a'*10**10 Зависит от системы
StopIteration Итератор завершен Пустой итератор next(iter([])) Пользовательские итераторы
AssertionError Сбой assert assert False Проверка условий
FloatingPointError Ошибка с плавающей точкой Некорректная операция FP numpy.seterr(all='raise') NumPy
UnicodeError Ошибка кодировки/декодирования "ü".encode("ascii") Проверка encoding
UnicodeDecodeError Ошибка декодирования b'\xff'.decode('utf-8') Чтение файла
UnicodeEncodeError Ошибка кодирования "ü".encode("ascii") Неверная кодировка
RecursionWarning Предупреждение рекурсии Глубокая рекурсия import warnings Не фатально
DeprecationWarning Предупреждение устаревшей функции Использование устаревшей функции warnings.warn("deprecated") Следует мигрировать
RuntimeWarning Предупреждение времени выполнения Потенциальная проблема import warnings Не фатально
FutureWarning Предупреждение будущих изменений Изменения в будущих версиях warnings.warn("future") Проверка совместимости
UserWarning Пользовательское предупреждение Кастомное предупреждение warnings.warn("user") Не фатально
PendingDeprecationWarning Скорое устаревание Функция будет удалена warnings.warn("pending") Редко
ResourceWarning Неосвобожденный ресурс Файл не закрыт open("file") Python 3+
ArithmeticError Арифметическая ошибка Некорректная операция int("x")/0 Базовый класс
BufferError Ошибка буфера Некорректная операция буфера memoryview(b'').release() Редко
ConnectionError Ошибка соединения Сетевые проблемы requests.get("bad_url") Зависит от сети
BrokenPipeError Разрыв канала Запись в закрытый pipe os.write(fd, b'data') Unix
ChildProcessError Ошибка дочернего процесса Проблема с дочерним процессом os.waitpid(-1) Редко
EOFError Неожиданный конец файла Конец ввода input() EOF Пустой ввод
EnvironmentError Ошибка среды Проблема ОС/окружения os.remove("/root/file") Базовый класс OSError
GeneratorExit Выход генератора gen.close() Генераторы
IOError Ошибка ввода/вывода Сбой чтения/записи open("/root/file") Python 3 -> OSError
InterruptedError Прервано Прерывание системного вызова os.read(fd, 0) Unix
LookupError Ошибка поиска Неверный поиск d['x'] Базовый класс Lookup
ReferenceError Недействительная ссылка Weak ref истекла import weakref Редко
RuntimeError Ошибка времени выполнения raise RuntimeError() Общая ошибка
StopAsyncIteration Конец async итератора async for Python 3.5+
SyntaxWarning Предупреждение синтаксиса Подозрительный синтаксис warnings.warn("syntax") Не останавливает программу
SystemError Системная ошибка Внутренняя ошибка Python sys._getframe(0) Редко
SystemExit Выход из системы sys.exit() Завершает программу
TimeoutError Истекло время Тайм-аут операции socket.settimeout() Сеть
UnboundLocalError Неинициализированная локальная переменная Использование до присваивания x=1; def f(): print(x); x=2 Подтип NameError
ZeroDivisionError Деление на ноль Делитель равен нулю 10 / 0 Проверка делителя

🧠 Проверьте Свои Знания

Готов к Началу

Test Your Knowledge

Проверьте свои знания кодов ошибок Python

3
Вопросы
🎯
70%
Для Прохождения
♾️
Время
🔄
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху