Python pogreške i ugrađene iznimke

U ovom vodiču naučit ćete o različitim vrstama pogrešaka i iznimkama koje su ugrađene u Python. Oni se podižu kad god Python interpreter naiđe na pogreške.

Video: Rukovanje iznimkama Pythona

Tijekom pisanja programa možemo napraviti određene pogreške koje dovode do pogrešaka kada ga pokušamo pokrenuti. Program python prestaje čim naiđe na neobrađenu pogrešku. Te se pogreške mogu široko klasificirati u dvije klase:

  1. Sintaksne pogreške
  2. Logičke pogreške (iznimke)

Pogreške u sintaksi Pythona

Pogreška uzrokovana nepridržavanjem odgovarajuće strukture (sintakse) jezika naziva se sintaksna pogreška ili pogreška raščlanjivanja .

Pogledajmo jedan primjer:

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

Kao što je prikazano u primjeru, strelica pokazuje gdje je parser naišao na sintaksnu pogrešku.

Ovdje možemo primijetiti da :u ifizjavi nedostaje debelo crijevo .

Python logičke pogreške (iznimke)

Pogreške koje se javljaju u vrijeme izvođenja (nakon prolaska testa sintakse) nazivaju se iznimkama ili logičkim pogreškama .

Na primjer, javljaju se kada pokušavamo otvoriti datoteku (za čitanje) koja ne postoji ( FileNotFoundError), pokušati podijeliti broj s nulom ( ZeroDivisionError) ili pokušati uvesti modul koji ne postoji ( ImportError).

Kad god se pojave ove vrste runtime pogrešaka, Python stvara objekt iznimke. Ako se s njime ne postupa ispravno, ispisuje se praćenje te pogreške zajedno s nekim pojedinostima o tome zašto je došlo do te pogreške.

Pogledajmo kako Python tretira ove pogreške:

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

Ugrađene iznimke u Pythonu

Ilegalne operacije mogu stvoriti iznimke. Puno je ugrađenih iznimaka u Pythonu koji se pojavljuju kada se pojave odgovarajuće pogreške. Sve ugrađene iznimke možemo pregledati pomoću ugrađene local()funkcije kako slijedi:

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

locals()('__builtins__')vratit će modul ugrađenih iznimaka, funkcija i atributa. diromogućuje nam da ove atribute navedemo kao nizove.

Neke od uobičajenih ugrađenih iznimki u programiranju na Pythonu, zajedno s pogreškama koje ih uzrokuju, navedene su u nastavku:

Iznimka Uzrok pogreške
AssertionError Podignuta kad assertizjava ne uspije.
AttributeError Povećava se kada dodjela atributa ili referenca ne uspije.
EOFError Povećava se kada input()funkcija postigne stanje na kraju datoteke.
FloatingPointError Povećava se kada operacija s pomičnim zarezom ne uspije.
GeneratorExit Povećajte kada close()se pozove metoda generatora .
ImportError Povećava se kada uvezeni modul nije pronađen.
IndexError Povećava se kada je indeks niza izvan opsega.
KeyError Podignut kad ključ nije pronađen u rječniku.
KeyboardInterrupt Povećava se kada korisnik pritisne tipku za prekidanje ( Ctrl+Cili Delete).
MemoryError Povećava se kad operaciji ponestane memorije.
NameError Povećava se kada varijabla nije pronađena u lokalnom ili globalnom opsegu.
NotImplementedError Odgojeno apstraktnim metodama.
OSError Povećava se kada rad sustava uzrokuje pogrešku povezanu sa sustavom.
OverflowError Povećava se kada je rezultat aritmetičke operacije prevelik da bi se mogao prikazati.
ReferenceError Povećava se kada se koristi slabi referentni proxy za pristup referentu prikupljenog smeća.
RuntimeError Povećava se kada pogreška ne spada u nijednu drugu kategoriju.
StopIteration Povišen next()funkcijom da označi da iterator nema daljnju stavku koju će vratiti.
SyntaxError Povišen parserom kada se naiđe na sintaksnu pogrešku.
IndentationError Podignuto kad postoji pogrešno uvlačenje.
TabError Povećava se kada se uvlačenje sastoji od nedosljednih kartica i razmaka.
SystemError Povećava se kada tumač otkrije unutarnju pogrešku.
SystemExit Podignuto sys.exit()funkcijom.
TypeError Povećava se kada se funkcija ili operacija primijeni na objekt pogrešnog tipa.
UnboundLocalError Povećava se kada se uputi na lokalnu varijablu u funkciji ili metodi, ali nijedna vrijednost nije vezana za tu varijablu.
UnicodeError Povećava se kada se dogodi pogreška kodiranja ili dekodiranja povezana s Unicodeom.
UnicodeEncodeError Povećava se kada se tijekom kodiranja dogodi pogreška povezana s Unicodeom.
UnicodeDecodeError Povećava se kada se tijekom dekodiranja dogodi pogreška povezana s Unicodeom.
UnicodeTranslateError Povećava se kada se tijekom prevođenja dogodi pogreška povezana s Unicodeom.
ValueError Povećava se kada funkcija dobije argument ispravnog tipa, ali neprimjerene vrijednosti.
ZeroDivisionError Povećava se kada je drugi operand dijeljenja ili modulo operacija nula.

Ako je potrebno, također možemo definirati vlastite iznimke u Pythonu. Da biste saznali više o njima, posjetite Python Korisnički definirane iznimke.

Mi može nositi ove ugrađene i korisnički definirane iznimke u Pythonu koristeći try, excepti finallyizjave. Da biste saznali više o njima, posjetite Python try, osim i konačno izjave.

Zanimljivi članci...