Chyby v Pythonu a integrované výjimky

V tomto kurzu se dozvíte o různých typech chyb a výjimek, které jsou integrovány do Pythonu. Jsou vyvolány vždy, když interpret jazyka Python narazí na chyby.

Video: Zpracování výjimek Pythonu

Při psaní programu můžeme dělat určité chyby, které při pokusu o jeho spuštění vedou k chybám. Program pythonu se ukončí, jakmile narazí na neošetřenou chybu. Tyto chyby lze obecně rozdělit do dvou tříd:

  1. Syntaktické chyby
  2. Logické chyby (výjimky)

Chyby syntaxe Pythonu

Chyba způsobená nedodržením správné struktury (syntaxe) jazyka se nazývá chyba syntaxe nebo chyba analýzy .

Podívejme se na jeden příklad:

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

Jak je znázorněno v příkladu, šipka označuje, kde analyzátor narazil na syntaktickou chybu.

Zde si můžeme všimnout, že :ve ifvýpisu chybí dvojtečka .

Logické chyby Pythonu (výjimky)

Chyby, které se vyskytnou za běhu (po absolvování testu syntaxe), se nazývají výjimky nebo logické chyby .

Například k nim dochází, když se pokusíme otevřít soubor (ke čtení), který neexistuje ( FileNotFoundError), pokusíme se rozdělit číslo nulou ( ZeroDivisionError) nebo se pokusíme importovat modul, který neexistuje ( ImportError).

Kdykoli dojde k těmto typům runtime chyb, Python vytvoří objekt výjimky. Pokud není správně zpracováno, vytiskne zpětné sledování této chyby spolu s některými podrobnostmi o tom, proč k této chybě došlo.

Podívejme se na to, jak Python zachází 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'

Integrované výjimky Pythonu

Nelegální operace mohou vyvolat výjimky. V Pythonu existuje spousta vestavěných výjimek, které jsou vyvolány, když dojde k odpovídajícím chybám. Všechny vestavěné výjimky můžeme zobrazit pomocí vestavěné local()funkce následujícím způsobem:

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

locals()('__builtins__')vrátí modul integrovaných výjimek, funkcí a atributů. dirumožňuje nám vypsat tyto atributy jako řetězce.

Některé z běžných vestavěných výjimek v programování v Pythonu spolu s chybou, která je způsobuje, jsou uvedeny níže:

Výjimka Příčina chyby
AssertionError Vyvolá se při assertselhání příkazu.
AttributeError Vyvolá se při selhání přiřazení atributu nebo odkazu.
EOFError Vyvolá se, když input()funkce narazí na podmínku konce souboru.
FloatingPointError Vyvoláno, když operace s plovoucí desetinnou čárkou selže.
GeneratorExit Zvyšte, když close()je vyvolána metoda generátoru .
ImportError Vyvolá se, když nenalezne importovaný modul.
IndexError Vyvolá se, když je index sekvence mimo rozsah.
KeyError Vyvolá se, když klíč není nalezen ve slovníku.
KeyboardInterrupt Vyvolá se, když uživatel stiskne klávesu přerušení ( Ctrl+Cnebo Delete).
MemoryError Vyvolá se, když operaci dojde paměť.
NameError Vyvolá se, když proměnná není nalezena v místním nebo globálním rozsahu.
NotImplementedError Vychován abstraktními metodami.
OSError Zvýšeno, když provoz systému způsobí chybu související se systémem.
OverflowError Vyvolá se, když je výsledek aritmetické operace příliš velký na to, aby byl reprezentován.
ReferenceError Vyvolá se, když se pro přístup k uvolněnému referentu použije slabý referenční proxy.
RuntimeError Vyvolá se, když chyba nespadá do žádné jiné kategorie.
StopIteration Vyvoláno next()funkcí k označení, že iterátor nemá vrátit žádnou další položku.
SyntaxError Vyvoláno analyzátorem, když dojde k chybě syntaxe.
IndentationError Vyvoláno, pokud je nesprávné odsazení.
TabError Vyvolá se, když se odsazení skládá z nekonzistentních karet a mezer.
SystemError Vyvoláno, když tlumočník zjistí interní chybu.
SystemExit Zvýšeno sys.exit()funkcí.
TypeError Vyvolá se, když se funkce nebo operace použije na objekt nesprávného typu.
UnboundLocalError Vyvolá se, když se provede odkaz na místní proměnnou ve funkci nebo metodě, ale na tuto proměnnou nebyla vázána žádná hodnota.
UnicodeError Vyvoláno, když dojde k chybě kódování nebo dekódování související s Unicode.
UnicodeEncodeError Vyvolá se, když během kódování dojde k chybě související s Unicode.
UnicodeDecodeError Vyvolá se, když během dekódování dojde k chybě související s Unicode.
UnicodeTranslateError Vyvoláno, když během překladu dojde k chybě související s Unicode.
ValueError Vyvolá se, když funkce získá argument správného typu, ale nesprávné hodnoty.
ZeroDivisionError Vyvolá se, když je druhý operand operace dělení nebo modulo nula.

V případě potřeby můžeme také definovat naše vlastní výjimky v Pythonu. Chcete-li se o nich dozvědět více, navštivte Python User-defined Exceptions.

Můžeme zpracovávat tyto vestavěný a uživatelsky definované výjimky v Pythonu používat try, excepta finallyvýroky. Chcete-li se o nich dozvědět více, navštivte příkazy Python try, kromě a nakonec.

Zajímavé články...