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, освен и накрая изявления.

Интересни статии...