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:
- Syntaktické chyby
- 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 if
vý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ů. dir
umožň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 assert selhá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+C nebo 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
, except
a finally
výroky. Chcete-li se o nich dozvědět více, navštivte příkazy Python try, kromě a nakonec.