Zpracování výjimek v Pythonu: Zkuste, Chyťte, Nakonec

Obsah:

Anonim

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:

  1. Snaž se
  2. úlovek
  3. Konečně
  4. 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.