У цьому підручнику ви дізнаєтесь про різні типи помилок та винятки, які вбудовані в Python. Вони піднімаються щоразу, коли інтерпретатор Python зустрічає помилки.
Відео: Обробка винятків Python
Ми можемо допустити певні помилки під час написання програми, які призводять до помилок, коли ми намагаємося її запустити. Програма python завершує роботу, як тільки зустрічає необроблену помилку. Ці помилки можна класифікувати на два класи:
- Синтаксичні помилки
- Логічні помилки (винятки)
Синтаксичні помилки 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, за винятком і нарешті тверджень.