Винятки в Python

 4514

Виняток — це несподівана ситуація, яка відбувається під час виконання програми. Наприклад:

Цей рядок згенерує виняток, тому що ділити на 0 не можна.

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

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

Наприклад, вони виникають, коли ми:

   намагаємося відкрити неіснуючий файл — генерується виняток FileNotFoundError;

   намагаємося ділити на нуль — генерується виняток ZeroDivisionError;

   намагаємося імпортувати неіснуючий модуль — генерується виняток ImportError.

При виникненні подібних помилок під час виконання Python створює об’єкт винятку.

Якщо помилка не була оброблена належним чином, виводиться інформація про цю помилку разом з подробицями, чому вона сталася.

Подивимося, як Python обробляє подібні помилки:

Результат:

Traceback (most recent call last):
File "<string>", line 1, in <module>
ZeroDivisionError: division by zero

Тут, під час спроби виконання операції 7 / 0, програма генерує виняток ZeroDivisionError.

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

Некоректні операції можуть генерувати винятки. У Python існує багато вбудованих винятків, які генеруються при виникненні відповідних помилок.

Ми можемо переглянути всі вбудовані винятки за допомогою функції local() наступним чином:

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

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

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

У разі потреби ми також можемо визначити власні винятки. Для роботи з винятками у Python використовуються оператори try, except та finally.

Помилки та винятки в Python

Помилками зазвичай є помилки компіляції, синтаксичні помилки, помилки у логічній частині коду, несумісність бібліотек, нескінченна рекурсія тощо.

Винятки можуть бути спіймані та оброблені програмою.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (12 оцінок, середня: 5,00 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *