Помилки Python та вбудовані винятки

У цьому підручнику ви дізнаєтесь про різні типи помилок та винятки, які вбудовані в Python. Вони піднімаються щоразу, коли інтерпретатор Python зустрічає помилки.

Відео: Обробка винятків Python

Ми можемо допустити певні помилки під час написання програми, які призводять до помилок, коли ми намагаємося її запустити. Програма python завершує роботу, як тільки зустрічає необроблену помилку. Ці помилки можна класифікувати на два класи:

  1. Синтаксичні помилки
  2. Логічні помилки (винятки)

Синтаксичні помилки Python

Помилка, спричинена недотриманням належної структури (синтаксису) мови, називається синтаксичною помилкою або помилкою синтаксичного аналізу .

Давайте розглянемо один приклад:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Як показано в прикладі, стрілка вказує, де парсер натрапив на синтаксичну помилку.

Тут ми можемо помітити, що :у ifвиписці відсутня двокрапка .

Логічні помилки Python (винятки)

Помилки, що виникають під час виконання (після проходження синтаксичного тесту), називаються винятками або логічними помилками .

Наприклад, вони виникають, коли ми намагаємось відкрити файл (для читання), який не існує ( FileNotFoundError), спробувати розділити число на нуль ( ZeroDivisionError) або спробувати імпортувати неіснуючий модуль ( ImportError).

Щоразу, коли виникають такі типи помилок виконання, Python створює об’єкт виключення. Якщо не обробляється належним чином, він друкує зворотний шлях до цієї помилки разом із деякими подробицями про те, чому ця помилка сталася.

Давайте подивимося, як Python розглядає ці помилки:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Вбудовані винятки Python

Незаконні операції можуть спричинити винятки. У Python існує безліч вбудованих винятків, які виникають при виникненні відповідних помилок. Ми можемо переглянути всі вбудовані винятки, використовуючи вбудовану local()функцію, наступним чином:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')поверне модуль вбудованих винятків, функцій та атрибутів. dirдозволяє перерахувати ці атрибути як рядки.

Нижче наведено деякі загальні вбудовані винятки у програмуванні на Python, а також помилки, що їх спричиняють:

Виняток Причина помилки
AssertionError Піднімається, коли assertзаява не вдається.
AttributeError Підвищується, коли призначення атрибута або посилання не вдається.
EOFError Підвищується, коли input()функція потрапляє в стан кінця файлу.
FloatingPointError Підвищується, коли операція з плаваючою точкою не вдається.
GeneratorExit Підвищення, коли викликається close()метод генератора .
ImportError Підвищується, коли імпортований модуль не знайдений.
IndexError Підвищується, коли індекс послідовності виходить за межі діапазону.
KeyError Піднімається, коли ключа немає в словнику.
KeyboardInterrupt Підвищується, коли користувач натискає клавішу переривання ( Ctrl+Cабо Delete).
MemoryError Підвищується, коли в операції закінчується пам’ять.
NameError Підвищується, коли змінну не можна знайти в локальній або глобальній області.
NotImplementedError Виховано абстрактними методами.
OSError Підвищується, коли робота системи викликає системну помилку.
OverflowError Підвищується, коли результат арифметичної операції занадто великий для подання.
ReferenceError Підвищується, коли для доступу до референта зібраного сміття використовується слабкий контрольний проксі.
RuntimeError Підвищується, коли помилка не підпадає під жодну іншу категорію.
StopIteration Збільшено за допомогою next()функції, щоб вказати, що ітератор не повертає жодного додаткового елемента.
SyntaxError Піднімається синтаксичним аналізатором при виявленні синтаксичної помилки.
IndentationError Підвищується при неправильному відступі.
TabError Підвищується, коли відступ складається з невідповідних табуляцій і пробілів.
SystemError Піднімається, коли перекладач виявляє внутрішню помилку.
SystemExit Підвищений за sys.exit()функцією.
TypeError Підвищується, коли функція чи операція застосовуються до об’єкта неправильного типу.
UnboundLocalError Підвищується, коли робиться посилання на локальну змінну у функції чи методі, але жодне значення не пов’язане з цією змінною.
UnicodeError Підвищується, коли виникає помилка кодування або декодування, пов’язана з Unicode.
UnicodeEncodeError Підвищується, коли під час кодування виникає помилка, пов’язана з Unicode.
UnicodeDecodeError Підвищується, коли під час декодування виникає помилка, пов’язана з Unicode.
UnicodeTranslateError Підвищується, коли під час перекладу виникає помилка, пов’язана з Unicode.
ValueError Підвищується, коли функція отримує аргумент правильного типу, але неправильне значення.
ZeroDivisionError Підвищується, коли другий операнд ділення або модульна операція дорівнює нулю.

За потреби ми можемо також визначити власні винятки в Python. Щоб дізнатись більше про них, відвідайте визначені користувачем винятки Python.

Ми можемо обробляти ці вбудовані і призначені для користувача виключення в Python з використанням try, exceptі finallyзаяву. Щоб дізнатись більше про них, відвідайте Python try, за винятком і нарешті тверджень.

Цікаві статті...