Co je to výjimka v Pythonu?
Výjimkou je chyba, ke které dochází v době provádění programu. Při spuštění programu však Python generuje výjimku, která by měla být zpracována, aby se zabránilo zhroucení vašeho programu. V jazyce Python se výjimky spouštějí automaticky při chybách, nebo je lze spustit a zachytit vaším kódem.
Výjimka označuje, že i když k události může dojít, k tomuto typu události dochází zřídka. Když metoda není schopna zpracovat výjimku, je vyvolána na její funkci volajícího. Nakonec, když je výjimka vyhozena z hlavní funkce, program je náhle ukončen.
V tomto výukovém programu pro výjimečné zpracování Pythonu se naučíte:
- Co je to výjimka v Pythonu?
- Běžné příklady výjimek
- Proč byste měli používat výjimky?
- Pravidla výjimek
- Výjimečný mechanismus manipulace
- Příkaz Try
- Prohlášení o úlovku
- Prohlášení o zvýšení
- Důležité chyby v Pythonu
- Další důležité výjimky Pythonu
- Chyba vs. výjimky
Běžné příklady výjimek:
- Dělení nulou
- Přístup k souboru, který neexistuje.
- Přidání dvou nekompatibilních typů
- Pokus o přístup k neexistujícímu indexu sekvence
- Odebrání tabulky z odpojeného databázového serveru.
- Výběr z bankomatu vyšší než dostupná částka
Proč byste měli používat výjimky?
Tady jsou důvody pro použití výjimek v Pythonu:
- Zpracování výjimek umožňuje oddělit kód pro zpracování chyb od normálního kódu.
- Výjimkou je objekt Python, který představuje chybu.
- Stejně jako u komentářů ke kódu vám výjimky pomohou připomenout si, co program očekává.
- Objasňuje kód a zvyšuje čitelnost.
- Umožňuje stimulovat důsledky, protože zpracování chyb probíhá na jednom místě a jedním způsobem.
- Výjimkou je pohodlná metoda pro zpracování chybových zpráv.
- V Pythonu můžete vyvolat výjimku v programu pomocí metody vyvolání výjimky.
- Zvýšení výjimky vám pomůže přerušit provádění aktuálního kódu a vrátí výjimku zpět do očekávání, dokud nebude zpracována.
- Zpracování výjimek pro komponenty, které je nemohou zpracovat přímo.
Pravidla výjimek
Zde jsou některá základní pravidla zpracování výjimek v Pythonu:
- Výjimky musí být objekty třídy
- Pro výjimky třídy můžete použít příkaz try s klauzulí kromě, která zmiňuje konkrétní třídu.
- I když je příkaz nebo výraz syntakticky správný, může se zobrazit chyba při pokusu o jeho provedení.
- Chyby nalezené během provádění se nazývají výjimky a nejsou bezpodmínečně fatální.
Výjimečný mechanismus manipulace
Zpracování výjimek je spravováno následujícími 5 klíčovými slovy:
- Snaž se
- úlovek
- Konečně
- házet
Příkaz Try
Příkaz try obsahuje klíčové slovo try, následované dvojtečkou (:) a sadou kódu, ve kterých mohou nastat výjimky. Má jednu nebo více klauzulí.
Pokud během provádění příkazu try nedošlo k žádným výjimkám, interpret ignoruje obslužné rutiny výjimek pro tento konkrétní příkaz try.
V případě, že v sadě try dojde k jakékoli výjimce, sadě try vyprší platnost a programové řízení se přenese do odpovídající kromě obslužné rutiny následující po sadě try.
Syntax:try:statement(s)
Prohlášení o úlovku
Catch bloky berou po jednom argumentu, což je typ výjimky, kterou pravděpodobně zachytí. Tyto argumenty se mohou pohybovat od konkrétního typu výjimky, kterou lze měnit, až po kategorii výjimek typu catch-all.
Pravidla pro blokování úlovků:
- Blok úlovků můžete definovat pomocí klíčového slova catch
- Parametr výjimky Catch je vždy uveden v závorkách
- Vždy představuje typ výjimky, která úchyty bloku zachycení.
- Kód pro zpracování výjimek je zapsán mezi dvě složené složené závorky.
- Do jednoho bloku pokusu můžete umístit více bloků úlovků.
- Blok catch můžete použít až po bloku try.
- Veškerý blok catch by měl být seřazen od výjimky podtřídy k nadtřídě.
Příklad:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Nakonec blok
Nakonec se blok vždy provede bez ohledu na to, zda je vyvolána výjimka. Konečné klíčové slovo vám umožňuje vytvořit blok kódu, který následuje po bloku try-catch.
Konečně je klauzule volitelná. Účelem je definovat akce vyčištění, které by měly být prováděny za všech podmínek.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Nakonec je klauzule provedena před příkazem try.
Prohlášení o zvýšení
Příkaz raise určuje argument, který inicializuje objekt výjimky. Zde čárka následuje za názvem výjimky a argumentem nebo n-ticí argumentu, který následuje za čárkou.
Syntax:
raise [Exception [, args [, traceback]]]
V této syntaxi je argument volitelný a v době provádění je hodnota argumentu výjimky vždy žádná.
Příklad:
Výjimkou Pythonu může být jakákoli hodnota, jako je řetězec, třída, číslo nebo objekt. Většina z těchto výjimek vyvolaných jádrem Pythonu jsou třídy s argumentem, který je instancí třídy.
Důležité chyby v Pythonu
Typ chyby | Popis |
Aritmetická chyba | ArithmeticError funguje jako základní třída pro všechny aritmetické výjimky. Vyvolává se kvůli chybám v aritmetických operacích. |
ImportError | ImportError se vyvolá, když se pokoušíte importovat modul, který není k dispozici. K tomuto druhu výjimky dochází, pokud jste udělali chybu při psaní v názvu modulu nebo modulu, který není ve standardní cestě. |
IndexError | IndexErroris vyvolán, když se pokusíte odkázat na sekvenci, která je mimo rozsah. |
KeyError | Když konkrétní klíč není nalezen ve slovníku, vyvolá se výjimka KeyError. |
Chyba názvu | NameError se vyvolá, když se na název odkazuje v kódu, který nikdy neexistuje v místním nebo globálním oboru názvů. |
ValueError | Chyba hodnoty se zvýší, když funkce nebo integrovaná operace přijme argument, který může být správného typu, ale nemá vhodnou hodnotu. |
EOFerror | Tento druh chyby vznikne, když jedna z předdefinovaných funkcí (input () nebo raw_input ()) dosáhne podmínky EOF bez čtení jakýchkoli dat. |
ZeroDivisonError | Tento typ chyby vyvolané při dělení nebo modulu nulou probíhá u všech číselných typů. |
IOError- | Tento druh chyby vyvolaný při selhání operace vstupu / výstupu. |
chyba syntaxe | SyntaxErrors vyvolané, když dojde k chybě v syntaxi Pythonu. |
Chyba odsazení | Tato chyba vyvolaná, když odsazení není správně definováno |
Další důležité výjimky Pythonu
Výjimka | Popis |
Aritmetická výjimka | Aritmetická chyba, například dělení nulou. |
ArraylndexOutOfBoundsException | Index pole je mimo hranice. |
ArrayStoreException | Přiřazení vám pomůže s prvkem pole nekompatibilního typu. |
ClassCastException | Neplatné obsazení |
MlegalMonitorStateException | Neplatná operace monitoru, jako čekání na odemčené vlákno. |
MlegalStateException | Prostředí nebo aplikace jsou ve špatném stavu. |
ClassNotFoundException | Třída nebyla nalezena. |
CloneNotSupportedException | Pokus o klonování objektu, který neimplementuje rozhraní Cloneable. |
Neplatná výjimka AccessException | Přístup do třídy byl odepřen. |
InstantiationException | Nastane, když se pokusíte vytvořit objekt rozhraní nebo abstraktní třídy. |
CloneNotSupportedException | Pokus o klonování objektu, který neimplementuje rozhraní. |
Chyba vs. výjimky
Chyba | Výjimky |
Všechny chyby v Pythonu jsou nezaškrtnuté. | Výjimky zahrnují zaškrtnutý i nezaškrtnutý typ. |
Došlo k chybám za běhu, které jsou kompilátoru neznámé. | Výjimky lze obnovit jejich zpracováním pomocí bloků try-catch. |
Chyby jsou většinou způsobeny prostředím, ve kterém je aplikace spuštěna. | Samotná aplikace způsobuje výjimky. |
Příklady: OutofMemoryError | Příklady: zaškrtnuté výjimky, výjimka SQL, NullPointerException atd. |
souhrn
- Výjimkou je chyba, ke které došlo během provádění programu.
- Výjimka označuje, že i když k události může dojít, k tomuto typu události dochází zřídka.
- Běžné příklady výjimek jsou 1) Dělení nulou, 2) Přístup k souboru, který neexistuje, 3) Přidání dvou nekompatibilních typů.
- Výjimkou je objekt Python, který představuje chybu.
- Příkaz try obsahuje klíčové slovo try, následované dvojtečkou (:) a sadou kódu, ve kterých mohou nastat výjimky. Má jednu nebo více klauzulí.
- Catch bloky berou po jednom argumentu, což je typ výjimky, kterou pravděpodobně zachytí.
- Příkaz raise určuje argument, který inicializuje objekt výjimky.
- Nakonec se blok vždy provede bez ohledu na to, zda je vyvolána výjimka.