Питхон грешке и уграђени изузеци

У овом упутству ћете научити о различитим врстама грешака и изузецима који су уграђени у Питхон. Они се подижу кад год Питхон интерпретер наиђе на грешке.

Видео: Руковање изузецима Питхон-а

Приликом писања програма можемо направити одређене грешке када покушавамо да га покренемо. Програм питхон се завршава чим наиђе на необрађену грешку. Ове грешке могу се широко класификовати у две класе:

  1. Синтаксне грешке
  2. Логичке грешке (изузеци)

Питхон синтаксне грешке

Грешка настала непридржавањем одговарајуће структуре (синтаксе) језика назива се синтаксна грешка или грешка рашчлањивања .

Погледајмо један пример:

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

Као што је приказано у примеру, стрелица показује где је парсер наишао на синтаксну грешку.

Овде можемо приметити да :у ifизјави недостаје дебело црево .

Питхон логичке грешке (изузеци)

Грешке које се јављају током извршавања (након полагања теста синтаксе) називају се изузецима или логичким грешкама .

На пример, јављају се када покушавамо да отворимо датотеку (за читање) која не постоји ( FileNotFoundError), покушавамо да поделимо број са нулом ( ZeroDivisionError) или да покушамо да увежемо модул који не постоји ( ImportError).

Кад год се појаве ове врсте рунтиме грешака, Питхон креира објекат изузетка. Ако се не поступи правилно, исписује повратну грешку до те грешке, заједно са неким детаљима о томе зашто је до те грешке дошло.

Погледајмо како Питхон третира ове грешке:

 >>> 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'

Питхон уграђени изузеци

Илегалне операције могу створити изузетке. Пуно је уграђених изузетака у Питхону који се појављују када се појаве одговарајуће грешке. Све уграђене изузетке можемо прегледати помоћу уграђене local()функције на следећи начин:

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

locals()('__builtins__')ће вратити модул уграђених изузетака, функција и атрибута. dirомогућава нам да ове атрибуте наведемо као низове.

У наставку су наведени неки од уобичајених уграђених изузетака у програмирању на Питхону, заједно са грешкама које их узрокују:

Изузетак Узрок грешке
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 Повећава се када дође до грешке у кодирању или декодирању повезаном са Уницодеом.
UnicodeEncodeError Повећава се када се током кодирања догоди грешка повезана са Уницоде-ом.
UnicodeDecodeError Повећава се када се током декодирања догоди грешка повезана са Уницоде-ом.
UnicodeTranslateError Повећава се када се током превођења догоди грешка повезана са Уницоде-ом.
ValueError Повећава се када функција добије аргумент исправног типа, али неправилне вредности.
ZeroDivisionError Повећава се када је други операнд дељења или модуло операција нула.

Ако је потребно, такође можемо дефинисати сопствене изузетке у Питхону. Да бисте сазнали више о њима, посетите Питхон кориснички дефинисане изузетке.

Ми може да обради ове уграђене и усер-дефинисане изузетке у Питхон помоћу try, exceptи finallyизјаве. Да бисте сазнали више о њима, посетите Питхон три, осим и коначно изјаве.

Занимљиви Чланци...