Значения исключений и ошибок в Python

Содержание

Распродажа знаний!

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

Синтаксис обработки исключений

Прежде чем переходить к обсуждению того, почему обработка исключений так важна, и рассматривать встроенные в Python исключения, важно понять, что есть тонкая грань между понятиями ошибки и исключения.

Ошибку нельзя обработать, а исключения Python обрабатываются при выполнении программы. Ошибка может быть синтаксической, но существует и много видов исключений, которые возникают при выполнении и не останавливают программу сразу же. Ошибка может указывать на критические проблемы, которые приложение и не должно перехватывать, а исключения — состояния, которые стоит попробовать перехватить. Ошибки — вид непроверяемых и невозвратимых ошибок, таких как OutOfMemoryError , которые не стоит пытаться обработать.

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

Ошибки могут быть разных видов:

  • Синтаксические
  • Недостаточно памяти
  • Ошибки рекурсии
  • Исключения

Разберем их по очереди.

Синтаксические ошибки (SyntaxError)

Синтаксические ошибки часто называют ошибками разбора. Они возникают, когда интерпретатор обнаруживает синтаксическую проблему в коде.

Рассмотрим на примере.

Стрелка вверху указывает на место, где интерпретатор получил ошибку при попытке исполнения. Знак перед стрелкой указывает на причину проблемы. Для устранения таких фундаментальных ошибок Python будет делать большую часть работы за программиста, выводя название файла и номер строки, где была обнаружена ошибка.

Недостаточно памяти (OutofMemoryError)

Ошибки памяти чаще всего связаны с оперативной памятью компьютера и относятся к структуре данных под названием “Куча” ( heap ). Если есть крупные объекты (или) ссылки на подобные, то с большой долей вероятности возникнет ошибка OutofMemory . Она может появиться по нескольким причинам:

  • Использование 32-битной архитектуры Python (максимальный объем выделенной памяти невысокий, между 2 и 4 ГБ);
  • Загрузка файла большого размера;
  • Запуск модели машинного обучения/глубокого обучения и много другое;

Обработать ошибку памяти можно с помощью обработки исключений — резервного исключения. Оно используется, когда у интерпретатора заканчивается память и он должен немедленно остановить текущее исполнение. В редких случаях Python вызывает OutofMemoryError , позволяя скрипту каким-то образом перехватить самого себя, остановить ошибку памяти и восстановиться.

Но поскольку Python использует архитектуру управления памятью из языка C (функция malloc() ), не факт, что все процессы восстановятся — в некоторых случаях MemoryError приведет к остановке. Следовательно, обрабатывать такие ошибки не рекомендуется, и это не считается хорошей практикой.

Ошибка рекурсии (RecursionError)

Эта ошибка связана со стеком и происходит при вызове функций. Как и предполагает название, ошибка рекурсии возникает, когда внутри друг друга исполняется много методов (один из которых — с бесконечной рекурсией), но это ограничено размером стека.

Все локальные переменные и методы размещаются в стеке. Для каждого вызова метода создается стековый кадр (фрейм), внутрь которого помещаются данные переменной или результат вызова метода. Когда исполнение метода завершается, его элемент удаляется.

Чтобы воспроизвести эту ошибку, определим функцию recursion , которая будет рекурсивной — вызывать сама себя в бесконечном цикле. В результате появится ошибка StackOverflow или ошибка рекурсии, потому что стековый кадр будет заполняться данными метода из каждого вызова, но они не будут освобождаться.

Ошибка отступа (IndentationError)

Эта ошибка похожа по духу на синтаксическую и является ее подвидом. Тем не менее она возникает только в случае проблем с отступами.

Исключения

Даже если синтаксис в инструкции или само выражение верны, они все равно могут вызывать ошибки при исполнении. Исключения Python — это ошибки, обнаруживаемые при исполнении, но не являющиеся критическими. Скоро вы узнаете, как справляться с ними в программах Python. Объект исключения создается при вызове исключения Python. Если скрипт не обрабатывает исключение явно, программа будет остановлена принудительно.

Программы обычно не обрабатывают исключения, что приводит к подобным сообщениям об ошибке:

Ошибка типа (TypeError)

Ошибка деления на ноль (ZeroDivisionError)

Есть разные типы исключений в Python и их тип выводится в сообщении: вверху примеры TypeError и ZeroDivisionError . Обе строки в сообщениях об ошибке представляют собой имена встроенных исключений Python.

Оставшаяся часть строки с ошибкой предлагает подробности о причине ошибки на основе ее типа.

Теперь рассмотрим встроенные исключения Python.

Встроенные исключения

Прежде чем переходить к разбору встроенных исключений быстро вспомним 4 основных компонента обработки исключения, как показано на этой схеме.

  • Try : он запускает блок кода, в котором ожидается ошибка.
  • Except : здесь определяется тип исключения, который ожидается в блоке try (встроенный или созданный).
  • Else : если исключений нет, тогда исполняется этот блок (его можно воспринимать как средство для запуска кода в том случае, если ожидается, что часть кода приведет к исключению).
  • Finally : вне зависимости от того, будет ли исключение или нет, этот блок кода исполняется всегда.

В следующем разделе руководства больше узнаете об общих типах исключений и научитесь обрабатывать их с помощью инструмента обработки исключения.

Ошибка прерывания с клавиатуры (KeyboardInterrupt)

Исключение KeyboardInterrupt вызывается при попытке остановить программу с помощью сочетания Ctrl + C или Ctrl + Z в командной строке или ядре в Jupyter Notebook. Иногда это происходит неумышленно и подобная обработка поможет избежать подобных ситуаций.

В примере ниже если запустить ячейку и прервать ядро, программа вызовет исключение KeyboardInterrupt . Теперь обработаем исключение KeyboardInterrupt .

Стандартные ошибки (StandardError)

Рассмотрим некоторые базовые ошибки в программировании.

Арифметические ошибки (ArithmeticError)

  • Ошибка деления на ноль (Zero Division);
  • Ошибка переполнения (OverFlow);
  • Ошибка плавающей точки (Floating Point);

Все перечисленные выше исключения относятся к классу Arithmetic и вызываются при ошибках в арифметических операциях.

Деление на ноль (ZeroDivisionError)

Когда делитель (второй аргумент операции деления) или знаменатель равны нулю, тогда результатом будет ошибка деления на ноль.

Переполнение (OverflowError)

Ошибка переполнение вызывается, когда результат операции выходил за пределы диапазона. Она характерна для целых чисел вне диапазона.

Ошибка утверждения (AssertionError)

Когда инструкция утверждения не верна, вызывается ошибка утверждения.

Рассмотрим пример. Предположим, есть две переменные: a и b . Их нужно сравнить. Чтобы проверить, равны ли они, необходимо использовать ключевое слово assert , что приведет к вызову исключения Assertion в том случае, если выражение будет ложным.

Ошибка атрибута (AttributeError)

При попытке сослаться на несуществующий атрибут программа вернет ошибку атрибута. В следующем примере можно увидеть, что у объекта класса Attributes нет атрибута с именем attribute .

Ошибка импорта (ModuleNotFoundError)

Ошибка импорта вызывается при попытке импортировать несуществующий (или неспособный загрузиться) модуль в стандартном пути или даже при допущенной ошибке в имени.

Ошибка поиска (LookupError)

LockupError выступает базовым классом для исключений, которые происходят, когда key или index используются для связывания или последовательность списка/словаря неверна или не существует.

Здесь есть два вида исключений:

Ошибка ключа

Если ключа, к которому нужно получить доступ, не оказывается в словаре, вызывается исключение KeyError .

Ошибка индекса

Если пытаться получить доступ к индексу (последовательности) списка, которого не существует в этом списке или находится вне его диапазона, будет вызвана ошибка индекса (IndexError: list index out of range python).

Ошибка памяти (MemoryError)

Как уже упоминалось, ошибка памяти вызывается, когда операции не хватает памяти для выполнения.

Ошибка имени (NameError)

Ошибка имени возникает, когда локальное или глобальное имя не находится.

В следующем примере переменная ans не определена. Результатом будет ошибка NameError .

Ошибка выполнения (Runtime Error)

Ошибка «NotImplementedError»
Ошибка выполнения служит базовым классом для ошибки NotImplemented . Абстрактные методы определенного пользователем класса вызывают это исключение, когда производные методы перезаписывают оригинальный.

Ошибка типа (TypeError)

Ошибка типа вызывается при попытке объединить два несовместимых операнда или объекта.

В примере ниже целое число пытаются добавить к строке, что приводит к ошибке типа.

Ошибка значения (ValueError)

Ошибка значения вызывается, когда встроенная операция или функция получают аргумент с корректным типом, но недопустимым значением.

В этом примере встроенная операция float получат аргумент, представляющий собой последовательность символов (значение), что является недопустимым значением для типа: число с плавающей точкой.

Пользовательские исключения в Python

В Python есть много встроенных исключений для использования в программе. Но иногда нужно создавать собственные со своими сообщениями для конкретных целей.

Это можно сделать, создав новый класс, который будет наследовать из класса Exception в Python.

В предыдущем примере если ввести что-либо меньше 1, будет вызвано исключение. Многие стандартные исключения имеют собственные исключения, которые вызываются при возникновении проблем в работе их функций.

Недостатки обработки исключений в Python

У использования исключений есть свои побочные эффекты, как, например, то, что программы с блоками try-except работают медленнее, а количество кода возрастает.

Дальше пример, где модуль Python timeit используется для проверки времени исполнения 2 разных инструкций. В stmt1 для обработки ZeroDivisionError используется try-except, а в stmt2 — if . Затем они выполняются 10000 раз с переменной a=0 . Суть в том, чтобы показать разницу во времени исполнения инструкций. Так, stmt1 с обработкой исключений занимает больше времени чем stmt2 , который просто проверяет значение и не делает ничего, если условие не выполнено.

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

Выводы!

Как вы могли увидеть, обработка исключений помогает прервать типичный поток программы с помощью специального механизма, который делает код более отказоустойчивым.

Обработка исключений — один из основных факторов, который делает код готовым к развертыванию. Это простая концепция, построенная всего на 4 блоках: try выискивает исключения, а except их обрабатывает.

Очень важно поупражняться в их использовании, чтобы сделать свой код более отказоустойчивым.

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

Какие есть синтаксические ошибки (SyntaxError)

Перед тем как рассматривать процесс обработки исключений и то, для чего он предназначен, важно разобраться с тем, чем ошибки в Python отличаются от исключений. Основные отличия:

  1. По сравнению с исключениями, ошибки не подлежат обработке.
  2. Изначально ошибки указывают на критические моменты в работоспособности программы и по алгоритму она не должна их перехватывать. Исключение желательно перехватывать, чтобы восстановить работоспособность программного кода, сделать его более устойчивым к возможным проблемам.
  3. Далеко не все ошибки останавливают рабочий процесс программы моментально.

Если рассматривать официальную терминологию, иногда исключения в программном коде могут приравниваться к классу SyntaxError. Однако при подробном изучении документации Python все синтаксические погрешности относятся к группе ошибок, но не исключений.

При работе с различными языками программирования, пользователи очень часто сталкиваются с ошибками. При этом все они разные. Некоторые приводят к полной остановке работы, другие доступны для исправления при последующей настройке кода, следующие могут остаться незамеченными до тех пор, пока работа будет практически полностью законченной. Отдельной группой выделяются ошибки, возникающие в определенных ситуациях. Если брать во внимание все ошибки Python, их можно разделить на 3 группы:

  1. Логические – возникают из-за логических неточностей в программном алгоритме.
  2. Синтаксические – появляются в следствии синтаксических погрешностей программного кода.
  3. Исключения – возникают из-за действий пользователей, которые не соответствуют программному алгоритму.

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

На погрешность в программном коде интерпретатор указывает стрелкой вверх. Это значительно упрощает работу программиста, так как Python экономит его время на поиск погрешностей синтаксиса.

Недостаточно памяти (OutofMemoryError)

Подобные ошибки напрямую связаны с количеством оперативной памяти на компьютере. Погрешности “OutofMemoryError” входят в структуру данных “Heap”. Ошибки часто возникают, если к файлу добавлены крупные массивы программного кода, на обработку которых недостаточно памяти. Причины возникновения погрешностей “OutofMemoryError”:

  1. Загрузка рабочего документа, который имеет большой размер.
  2. Для работы применяется Python 32-битной архитектуры.
  3. Использование моделей глубокого или машинного обучения.

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

Сам Python в некоторых ситуациях может автоматически вызвать “OutofMemoryError”, за счет чего скрипт перехватывает сам себя, восстанавливает, решая ошибку.

Важно! Так как в Python применяется система управления памятью на базе языка C, после обработки исключений процессы восстанавливаются не всегда. Часто данное действие приводит к моментальному завершению рабочего процесса. По этой причине опытные программисты редко обрабатывают погрешности данной группы.

Ошибка рекурсии (RecursionError)

Данная погрешность возникает во время вызова функций, зависит от стека. Суть этой ошибки заключается в том, что стек имеет ограниченный размер, но внутри него выполняется множество методов. При этом один из них должен иметь бесконечную рекурсию.

Для воспроизведения данной погрешности, необходимо определить функцию “Recursion”. Она будет активировать себя в замкнутом цикле. За счет этого должна появиться ошибка с названием “StackOverflow”. Фрагмент кода как практический пример:

Ошибка отступа (IndentationError)

Изначально данную погрешность можно спутать с синтаксической. Однако она появляется только в тех случаях, когда при написании программного кода были неправильно оформлены отступы. Практический пример:

Какие бывают исключения

Исключения в Python называются те ошибки, которые не являются критическими для всего рабочего файла, но возникают при исполнении программного кода. В тех ситуациях, когда встроенный скрипт не может обработать исключение, рабочий процесс программы подлежит принудительной остановке. Отдельное внимание нужно уделить иерархии исключений. Все они берут свое начало от BaseException. По иерархии, все исключения разделяются на две группы:

Системные исключения обрабатываются только в крайнем случае, когда нужно получить определенный результат. При этом делать это должен программист со значительным опытом. Обыкновенные исключения нужно обрабатывать. Делать это самостоятельно может даже человек без значительного опыта в данной сфере. Типы системных исключений:

  1. GeneratorExit – они появляются в том случае, если пользователь запрашивает метод “close” от объекта “generator”.
  2. KeyboardInterrupt – данное исключение появляется в том случае, если пользователь прервал рабочий процесс программы через комбинацию клавиш “CTRL+C”.
  3. SystemExit – возникает при активации функции sys. exit, которая иногда срабатывает при выходе из программы.

Без автоматического осуществления обработки будут возникать различные ошибки. Существует несколько наиболее популярных исключение, о которых необходимо поговорить подробнее.

Ошибка типа (TypeError)

Простой пример данной ошибки исключения будет приведен ниже:

Ошибка деления на ноль (ZeroDivisionError)

Еще одна популярная ошибка, возникающая в Python при выполнении арифметических вычислений:

Встроенные исключения

В Python присутствует 4 компонента для обработки исключений:

  1. Try – данная команда вызывает тот блок кода, в котором должна появиться погрешность.
  2. Expect – через этот компонент вычисляется и обозначается тот тип исключения, который должен возникнуть в вызванном ранее блоке кода.
  3. Else – данный блок вызывается в том случае, если исключения отсутствуют.
  4. Finally – этот блок будет исполнен в любом случае.

Схема встроенных исключений:

obrabotka-chastyh-oshibok-i-isklyuchenij-v-python-interpretaciya-znachenij-i-oshibok

Классы встроенных исключений

Ошибка прерывания с клавиатуры (KeyboardInterrupt)

Погрешность с таким обозначением относится к группе встроенных. Данная ошибка активируется в том случае, если пользователь пытается остановить рабочий процесс программы определенными комбинациями клавиш – Ctrl+Z или же Ctrl+С (они прописываются через ядро Jupyter Notebook, еще один вариант – через командную строку). Обработка исключения KeyboardInterrupt осуществляется по следующему принципу:

Какие бывают стандартные ошибки (StandardError)

Чаще всего при работе в Python возникают базовые ошибки. Самые распространенные из них необходимо рассмотреть подробнее.

Арифметические ошибки (ArithmeticError)

К этой группе можно отнести несколько популярных погрешностей:

  1. Zero Division (возникает из-за того, что при каком-либо арифметическом вычислении происходит деление на ноль).
  2. Floating Point (так обозначаются плавающие точки).
  3. OverFlow (переполнение).

Данные ошибки отображаются при погрешностях в математических операциях.

Деление на ноль (ZeroDivisionError)

Данная ошибка возникает в том случае, если знаменатель или делитель равны нулю. Пример:

Переполнение (OverflowError)

Эта ошибка появляется, если конечный результат осуществляемого действия нарушает границы установленного заранее диапазона. Пример:

Ошибка утверждения (AssertionError)

Погрешность утверждения появляется в тех ситуациях, когда не верной оказывается инструкция утверждения. Как пример:

Ошибка атрибута (AttributeError)

Если определенного атрибута в программном коде не существует, а сама программа пытается на него сослаться, появится данная ошибка. Пример:

Ошибка импорта (ModuleNotFoundError)

Если программа пытается импортировать модуль, которого не существует по стандартному пути, появится ошибка “ModuleNotFound”. Пример:

Ошибка поиска (LookupError)

LockupError – считается основным классом для различных исключений. Данная ошибка выполняется в том случае, если ключи или индексы применяются для объединения или же последовательность для словаря или же перечисления является неверной (несуществующей). При этом может появиться две разновидности исключений – первая относится к индексу, вторая – к ключу.

Ошибка ключа

Иногда требуемых ключей может не оказаться в словаре. Если программа запрашивает к ним доступ, появится ошибка “KeyError”. Пример:

Ошибка индекса

Данная погрешность возникает, если программа отправляет запросы к индексу от рабочего списка, который находится за общим диапазоном данного списка или же его вообще нет. Из-за этого возникнет ошибка. Пример:

Ошибка памяти (MemoryError)

Данная погрешность уже описывалась выше. Она возникает в тех ситуациях, когда для совершения рабочих операций недостаточно памяти.

Ошибка имени (NameError)

Такая ошибка появляется в том случае, если программа не может найти local name или же global name. Пример:

Ошибка выполнения (Runtime Error)

Данная ошибка является базовой для “NotImplemented”. Пример:

Ошибка типа (TypeError)

Эта ошибка появляется в тех случаях, когда программа пытается совместить между собой несовместимые объекты или же операнды. Пример:

Ошибка значения (ValueError)

Когда на встроенную в программный код функцию или рабочую операцию приходит аргумент, который имеет корректный тип и одновременно с этим недопустимое значение, возникает ошибка “ValueError”. Пример:

Пользовательские исключения в Python

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

Для того чтобы запустить пользовательское исключение, необходимо добавить в рабочий файл ключевое слово “raise”. Следующее действие – создание нового объекта, который имеет тип “Exception”.

Для создания пользовательского исключения необходимо сделать новый класс. При этом он должен быть унаследован от базового “Exception”. В появившемся конструкторе нужно прописать текст пользовательского исключения. Оно понадобится в тех случаях, когда пользователь начинает выполнять действия, не соответствующие программному алгоритму.

Какие есть недостатки обработки исключений в Python

Нельзя забывать о том, что у процесса применения исключений есть определенные недостатки. Один из них – замедление процесса работы программы, имеющей блоки “try-except”, при этом значительно увеличивается количество кода. Чтобы максимально эффективно применять возможность обработки исключений в Python, необходимо ограничить его применение, осуществлять его только в крайних случаях.

obrabotka-chastyh-oshibok-i-isklyuchenij-v-python-interpretaciya-znachenij-i-oshibok

Варианты рабочего процесса программы – в нормальном режиме (без ошибок), при осуществлении процесса обработки и без него

Заключение

Если научиться пользоваться обработкой для различных исключений вовремя, можно остановить рабочий процесс программы, сделать код устойчивым к возникновению различных проблем. Дополнительно к этому процесс обработки исключений подготовит программный код к развертыванию.

Python Traceback — Как правильно исправлять ошибки в коде

Traceback в Python 3

Python выводит трассировку (далее traceback), когда в вашем коде появляется ошибка. Вывод traceback может быть немного пугающим, если вы видите его впервые, или не понимаете, чего от вас хотят. Однако traceback Python содержит много информации, которая может помочь вам определить и исправить причину, из-за которой в вашем коде возникла ошибка.

Содержание статьи

Понимание того, какую информацию предоставляет traceback Python является основополагающим критерием того, как стать лучшим Python программистом.

К концу данной статьи вы сможете:

  • Понимать, что несет за собой traceback
  • Различать основные виды traceback
  • Успешно вести журнал traceback, при этом исправить ошибку

Python Traceback — Как правильно читать трассировку?

Traceback (трассировка) — это отчет, который содержит вызовы выполненных функций в вашем коде в определенный момент.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Traceback называют по разному, иногда они упоминаются как трассировка стэка, обратная трассировка, и так далее. В Python используется определение “трассировка”.

Когда ваша программа выдает ошибку, Python выводит текущую трассировку, чтобы подсказать вам, что именно пошло не так. Ниже вы увидите пример, демонстрирующий данную ситуацию:

Здесь say_hello() вызывается с параметром man . Однако, в say_hello() это имя переменной не используется. Это связано с тем, что оно написано по другому: wrong_variable в вызове print() .

Обратите внимание: в данной статье подразумевается, что вы уже имеете представление об ошибках Python. Если это вам не знакомо, или вы хотите освежить память, можете ознакомиться с нашей статьей: Обработка ошибок в Python

Когда вы запускаете эту программу, вы получите следующую трассировку:

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

В traceback выше, ошибкой является NameError, она означает, что есть отсылка к какому-то имени (переменной, функции, класса), которое не было определено. В данном случае, ссылаются на имя wrong_variable .

Последняя строка содержит достаточно информации для того, чтобы вы могли решить эту проблему. Поиск переменной wrong_variable , и заменит её атрибутом из функции на man . Однако, скорее всего в реальном случае вы будете иметь дело с более сложным кодом.

Python Traceback — Как правильно понять в чем ошибка?

Трассировка Python содержит массу полезной информации, когда вам нужно определить причину ошибки, возникшей в вашем коде. В данном разделе, мы рассмотрим различные виды traceback, чтобы понять ключевые отличия информации, содержащейся в traceback.

Подробный обзор структуры трассировки в Python 3

Существует несколько секций для каждой трассировки Python, которые являются крайне важными. Диаграмма ниже описывает несколько частей:

Обзор трассировки Python

В Python лучше всего читать трассировку снизу вверх.

  1. Синее поле: последняя строка из traceback — это строка уведомления об ошибке. Синий фрагмент содержит название возникшей ошибки .
  2. Зеленое поле: после названия ошибки идет описание ошибки . Это описание обычно содержит полезную информацию для понимания причины возникновения ошибки.
  3. Желтое поле: чуть выше в трассировке содержатся различные вызовы функций. Снизу вверх — от самых последних, до самых первых. Эти вызовы представлены двухстрочными вводами для каждого вызова. Первая строка каждого вызова содержит такую информацию, как название файла , номер строки и название модуля . Все они указывают на то, где может быть найден код.
  4. Красное подчеркивание: вторая строка этих вызовов содержит непосредственный код, который был выполнен с ошибкой .

Есть ряд отличий между выдачей трассировок, когда вы запускает код в командной строке, и между запуском кода в REPL. Ниже вы можете видеть тот же код из предыдущего раздела, запущенного в REPL и итоговой выдачей трассировки:

Источники:

https://pythonru. com/osnovy/znachenija-iskljuchenij-i-oshibok-v-python

https://office-guru. ru/python-onlajn-kurs/obrabotka-chastyh-oshibok-i-isklyuchenij-v-python-interpretaciya-znachenij-i-oshibok. html

https://python-scripts. com/python-traceback

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: