Chyby v Pythone a zabudované výnimky

V tomto tutoriáli sa dozviete o rôznych druhoch chýb a výnimkách, ktoré sú zabudované do Pythonu. Sú vyvolané vždy, keď tlmočník Pythonu narazí na chyby.

Video: Spracovanie výnimiek Pythonu

Pri písaní programu môžeme urobiť určité chyby, ktoré pri pokuse o jeho spustenie vedú k chybám. Program python sa ukončí, akonáhle narazí na neošetrenú chybu. Tieto chyby možno zhruba rozdeliť do dvoch tried:

  1. Syntaxové chyby
  2. Logické chyby (výnimky)

Chyby syntaxe Pythonu

Chyba spôsobená nedodržiavaním správnej štruktúry (syntaxe) jazyka sa nazýva syntaktická chyba alebo syntaktická chyba .

Pozrime sa na jeden príklad:

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

Ako je znázornené v príklade, šípka označuje, kde syntaktický analyzátor narazil na syntaktickú chybu.

Tu si môžeme všimnúť, že :vo ifvýpise chýba dvojbodka .

Logické chyby v Pythone (výnimky)

Chyby, ktoré sa vyskytnú za behu programu (po absolvovaní testu syntaxe), sa nazývajú výnimky alebo logické chyby .

Napríklad k nim dôjde, keď sa pokúsime otvoriť súbor (na čítanie), ktorý neexistuje ( FileNotFoundError), pokúsime sa vydeliť číslo nulou ( ZeroDivisionError) alebo sa pokúsime importovať modul, ktorý neexistuje ( ImportError).

Kedykoľvek dôjde k týmto typom runtime chýb, Python vytvorí objekt výnimky. Ak nie je spracovaná správne, vytlačí spätné sledovanie tejto chyby spolu s niektorými podrobnosťami o tom, prečo k tejto chybe došlo.

Pozrime sa, ako Python zaobchádza s týmito chybami:

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

Vstavané výnimky pre Python

Nezákonné operácie môžu spôsobiť výnimky. V Pythone je veľa zabudovaných výnimiek, ktoré sa vyvolajú, keď sa vyskytnú príslušné chyby. Všetky zabudované výnimky môžeme zobraziť pomocou zabudovanej local()funkcie takto:

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

locals()('__builtins__')vráti modul zabudovaných výnimiek, funkcií a atribútov. dirumožňuje nám uviesť tieto atribúty ako reťazce.

Niektoré z bežných zabudovaných výnimiek v programovaní v Pythone spolu s chybou, ktorá ich spôsobuje, sú uvedené nižšie:

Výnimka Príčina chyby
AssertionError Zvýšené, keď assertvyhlásenie zlyhá.
AttributeError Zvýšené, keď zlyhá priradenie alebo odkaz na atribút.
EOFError Zvýšené, keď input()funkcia dosiahne stav konca súboru.
FloatingPointError Zvýšené, keď operácia s pohyblivou rádovou čiarkou zlyhá.
GeneratorExit Zvýšiť, keď close()sa volá metóda generátora .
ImportError Zvýšené, keď sa nenájde importovaný modul.
IndexError Vyvolá sa, keď je index sekvencie mimo rozsahu.
KeyError Vyzdvihnuté, keď sa kľúč nenájde v slovníku.
KeyboardInterrupt Zvýšené, keď používateľ stlačí kláves prerušenia ( Ctrl+Calebo Delete).
MemoryError Vyvolá sa, keď operácii dôjde pamäť.
NameError Vyvolá sa, keď sa premenná nenájde v miestnom alebo globálnom rozsahu.
NotImplementedError Vyvinuté abstraktnými metódami.
OSError Zvýšené, keď prevádzka systému spôsobí chybu súvisiacu so systémom.
OverflowError Vyvolá sa, keď je výsledok aritmetickej operácie príliš veľký na to, aby sa dal reprezentovať.
ReferenceError Vyvolá sa, keď sa na prístup k referentovi zbieraného odpadu použije slabý referenčný proxy server.
RuntimeError Vyvoláva sa, keď chyba nespadá do žiadnej inej kategórie.
StopIteration Zvýšené o next()funkciu, ktorá označuje, že iterátor už nemá vrátiť žiadnu ďalšiu položku.
SyntaxError Zvýšené syntaktickým analyzátorom, keď sa vyskytne syntaktická chyba.
IndentationError Vyvolá sa, ak dôjde k nesprávnemu odsadeniu.
TabError Vyvolá sa, keď odsadenie pozostáva z nekonzistentných tabulátorov a medzier.
SystemError Zvýšené, keď tlmočník zistí vnútornú chybu.
SystemExit Zvýšené sys.exit()funkciou.
TypeError Vyvolané, keď sa funkcia alebo operácia použije na objekt nesprávneho typu.
UnboundLocalError Vyvolá sa, keď sa vo funkcii alebo metóde odkazuje na lokálnu premennú, ale na túto premennú nebola naviazaná žiadna hodnota.
UnicodeError Vyvoláva sa, keď dôjde k chybe kódovania alebo dekódovania súvisiacej s Unicode.
UnicodeEncodeError Vyvoláva sa, keď sa počas kódovania vyskytne chyba súvisiaca s kódom Unicode.
UnicodeDecodeError Vyvoláva sa, keď sa počas dekódovania vyskytne chyba súvisiaca s Unicode.
UnicodeTranslateError Zobrazuje sa, keď sa pri prekladaní vyskytne chyba súvisiaca s kódom Unicode.
ValueError Vyvolané, keď funkcia získa argument správneho typu, ale nesprávnej hodnoty.
ZeroDivisionError Vyvolá sa, keď je druhý operand rozdelenia alebo operácie modulo nulový.

Ak je to potrebné, môžeme v Pythone definovať aj naše vlastné výnimky. Ak sa o nich chcete dozvedieť viac, navštívte Výnimky definované používateľom Pythonu.

Tieto zabudované a používateľom definované výnimky môžeme v Pythone spracovať pomocou príkazov try, excepta finally. Ak sa chcete o nich dozvedieť viac, navštívte príkazy python try, except a nakoniec.

Zaujímavé články...