Python napake in vgrajene izjeme

V tej vadnici boste spoznali različne vrste napak in izjem, ki so vgrajene v Python. Povišajo se, kadar tolmač Python naleti na napake.

Video: Obravnava izjem Python

Med pisanjem programa lahko naredimo določene napake, ki vodijo do napak, ko ga poskušamo zagnati. Program python se konča takoj, ko naleti na neobdelano napako. Te napake lahko na splošno razvrstimo v dva razreda:

  1. Sintaksne napake
  2. Logične napake (izjeme)

Napake v sintaksi Python

Napaka, ki nastane zaradi neupoštevanja ustrezne strukture (sintakse) jezika, se imenuje sintaksna napaka ali napaka pri razčlenjevanju .

Oglejmo si en primer:

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

Kot je prikazano v primeru, puščica označuje, kje je razčlenjevalnik naletel na sintaksno napako.

Tu lahko opazimo, da :v ifizjavi manjka debelo črevo .

Logične napake Pythona (izjeme)

Napake, ki se pojavijo med izvajanjem (po opravljenem preizkusu skladnje), se imenujejo izjeme ali logične napake .

Na primer, pojavijo se, ko poskušamo odpreti datoteko (za branje), ki ne obstaja ( FileNotFoundError), poskusimo deliti število z ničlo ( ZeroDivisionError) ali poskusiti uvoziti modul, ki ne obstaja ( ImportError).

Kadar se pojavijo te vrste napak med izvajanjem, Python ustvari objekt izjeme. Če se z njo ne ravna pravilno, natisne sled do te napake in nekaj podrobnosti o tem, zakaj je prišlo do napake.

Poglejmo, kako Python obravnava te napake:

 >>> 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 vgrajene izjeme

Ilegalne operacije lahko povzročijo izjeme. V Pythonu je vgrajenih izjem, ki nastanejo, ko pride do ustreznih napak. Vse vgrajene izjeme si lahko ogledamo z uporabo vgrajene local()funkcije, kot sledi:

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

locals()('__builtins__')vrne modul vgrajenih izjem, funkcij in atributov. dirnam omogoča, da te atribute navedemo kot nize.

Nekatere pogoste vgrajene izjeme v programiranju Python in napake, ki jih povzročajo, so navedene spodaj:

Izjema Vzrok napake
AssertionError Dvigne se, ko assertizjava ne uspe.
AttributeError Zviša se, kadar dodelitev ali sklic atributa ne uspe.
EOFError Zviša se, ko input()funkcija doseže stanje konca datoteke.
FloatingPointError Zviša se, ko operacija s plavajočo vejico ne uspe.
GeneratorExit Dvignite, ko close()se pokliče metoda generatorja .
ImportError Zviša se, ko uvoženega modula ni mogoče najti.
IndexError Zviša se, ko je indeks zaporedja zunaj obsega.
KeyError Dvigne se, če ključa v slovarju ni mogoče najti.
KeyboardInterrupt Zviša se, ko uporabnik pritisne tipko za prekinitev ( Ctrl+Cali Delete).
MemoryError Poviša se, ko operaciji zmanjka pomnilnika.
NameError Poviša se, če spremenljivke ni mogoče najti v lokalnem ali globalnem obsegu.
NotImplementedError Vzgojeno z abstraktnimi metodami.
OSError Poviša se, ko delovanje sistema povzroči sistemsko napako.
OverflowError Zviša se, če je rezultat aritmetične operacije prevelik, da bi ga lahko predstavili.
ReferenceError Poviša se, ko se za dostop do referenca, zbranega smeti, uporablja šibki referenčni strežnik proxy.
RuntimeError Poveča se, če napaka ne spada v nobeno drugo kategorijo.
StopIteration Dvignjeno s next()funkcijo, ki označuje, da iterator ne vrne nobenega drugega elementa.
SyntaxError Dvignil razčlenjevalnik, ko je prišlo do napake v sintaksi.
IndentationError Dvignjeno, če je napačna vdolbina.
TabError Poviša se, če je zamik sestavljen iz neskladnih zavihkov in presledkov.
SystemError Poviša se, ko tolmač zazna notranjo napako.
SystemExit Dvignjeno glede na sys.exit()funkcijo.
TypeError Poviša se, če je funkcija ali operacija uporabljena za objekt napačnega tipa.
UnboundLocalError Zviša se, ko se v funkciji ali metodi sklicuje na lokalno spremenljivko, vendar na to spremenljivko ni vezana nobena vrednost.
UnicodeError Poviša se, ko pride do napake kodiranja ali dekodiranja, povezane z Unicode.
UnicodeEncodeError Poveča se, ko med kodiranjem pride do napake, povezane z Unicode.
UnicodeDecodeError Poveča se, ko med dekodiranjem pride do napake, povezane z Unicode.
UnicodeTranslateError Poveča se, ko med prevajanjem pride do napake, povezane z Unicode.
ValueError Zviša se, ko funkcija dobi argument pravilnega tipa, vendar nepravilne vrednosti.
ZeroDivisionError Zviša se, ko je drugi operand delitve ali modulo nič.

Po potrebi lahko v Pythonu določimo tudi lastne izjeme. Če želite izvedeti več o njih, obiščite Python uporabniško določene izjeme.

Lahko ročaj to vgrajeno in uporabniku opredeljene izjeme v Python z uporabo try, exceptin finallyizjave. Če želite izvedeti več o njih, obiščite Python, razen stavkov in na koncu.

Zanimive Članki...