Spracovanie výnimiek z Pythonu: Vyskúšajte, chyťte, konečne

Obsah:

Anonim

Čo je výnimka v Pythone?

Výnimkou je chyba, ktorá sa stane v čase vykonania programu. Počas spustenia programu však Python generuje výnimku, ktorú je potrebné spracovať, aby nedošlo k zlyhaniu vášho programu. V jazyku Python sa výnimky spúšťajú automaticky pri chybách, alebo ich môže spustiť a zachytiť váš kód.

Výnimka naznačuje, že aj keď k udalosti môže dôjsť, tento typ udalosti sa stane zriedka. Keď metóda nie je schopná spracovať výnimku, vrhne sa na svoju funkciu volajúceho. Nakoniec, keď dôjde k vyhodeniu výnimky z hlavnej funkcie, program sa náhle ukončí.

V tomto tutoriáli o výnimočnom zaobchádzaní s Pythonom sa dozviete:

  • Čo je výnimka v Pythone?
  • Bežné príklady výnimiek
  • Prečo by ste mali používať výnimky?
  • Pravidlá výnimiek
  • Výnimočný manipulačný mechanizmus
    • Vyhlásenie Try
    • Vyhlásenie o úlovkoch
    • Vyhlásenie o zvýšení
  • Dôležité chyby v Pythone
  • Ďalšie dôležité výnimky pre Python
  • Chyba vs. výnimky

Bežné príklady výnimiek:

  • Delenie nulou
  • Prístup k súboru, ktorý neexistuje.
  • Pridanie dvoch nekompatibilných typov
  • Pokúšam sa získať prístup k neexistujúcemu indexu sekvencie
  • Odstraňuje sa tabuľka z odpojeného databázového servera.
  • Výber z bankomatu vyšší ako dostupná suma

Prečo by ste mali používať výnimky?

Tu sú dôvody použitia výnimiek v Pythone:

  • Spracovanie výnimiek vám umožňuje oddeliť kód na spracovanie chýb od normálneho.
  • Výnimkou je objekt Python, ktorý predstavuje chybu.
  • Rovnako ako v prípade komentárov ku kódu, aj výnimky vám pomôžu pripomenúť si, čo program očakáva.
  • Objasňuje kód a zvyšuje čitateľnosť.
  • Umožňuje vám stimulovať následky, pretože riešenie chýb sa deje na jednom mieste a jedným spôsobom.
  • Výnimkou je pohodlný spôsob spracovania chybových správ.
  • V Pythone môžete v programe zvýšiť výnimku pomocou metódy zvýšenia výnimky.
  • Zvyšovanie výnimky vám pomôže prerušiť súčasné vykonávanie kódu a vráti výnimku späť do očakávania, kým nebude spracovaná.
  • Spracúvajú sa výnimky pre komponenty, ktoré ich nemôžu spracovať priamo.

Pravidlá výnimiek

Tu uvádzame niektoré základné pravidlá spracovania výnimiek v Pythone:

  • Výnimkou musia byť objekty triedy
  • Pre výnimky triedy môžete použiť príkaz try s klauzulou except, ktorá uvádza konkrétnu triedu.
  • Aj keď je príkaz alebo výraz syntakticky správny, môže sa zobraziť chyba pri pokuse o ich vykonanie.
  • Chyby zistené počas vykonávania sa nazývajú výnimky a nie sú bezpodmienečne fatálne.

Výnimočný manipulačný mechanizmus

Spracovanie výnimiek je spravované nasledujúcimi 5 kľúčovými slovami:

  1. skús
  2. chytiť
  3. konečne
  4. hodiť

Vyhlásenie Try

Príkaz try obsahuje kľúčové slovo try, za ktorým nasleduje dvojbodka (:) a sada kódu, v ktorých sa môžu vyskytnúť výnimky. Má jednu alebo viac doložiek.

Ak počas vykonávania príkazu try nedošlo k žiadnym výnimkám, tlmočník ignoruje obslužné rutiny výnimiek pre tento konkrétny príkaz try.

V prípade, že sa v skupine pokusov vyskytne akákoľvek výnimka, skupine skúšok vyprší platnosť a riadenie programu sa prenesie do zhody okrem obsluhy nasledujúcej po skupine skúšok.

Syntax:try:statement(s)

Vyhlásenie o úlovkoch

Bloky úlovkov trvajú po jednom argumente, čo je typ výnimky, ktorú pravdepodobne zachytí. Tieto argumenty sa môžu pohybovať od konkrétneho typu výnimky, ktorá sa môže meniť, až po všeobecnú kategóriu výnimiek.

Pravidlá pre blokovanie úlovkov:

  • Blok úlovkov môžete definovať pomocou kľúčového slova úlovok
  • Parameter Výnimka z úlovku je vždy uvedený v zátvorkách
  • Vždy predstavuje typ výnimky, ktorú zachytáva blok bloku.
  • Kód na spracovanie výnimiek je napísaný medzi dvoma zloženými zloženými zátvorkami.
  • Do jedného bloku pokusu môžete umiestniť viac blokov úlovku.
  • Blok úlovkov môžete použiť až po bloku try.
  • Všetky bloky úlovkov by sa mali zoradiť od výnimky podtriedy po nadtriedu.

Príklad:

try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}

Nakoniec zablokujte

Nakoniec sa blok vždy vykoná bez ohľadu na to, či je výnimka vyhodená alebo nie. Posledné kľúčové slovo vám umožňuje vytvoriť blok kódu, ktorý nasleduje po bloku try-catch.

Nakoniec je klauzula voliteľná. Účelom je definovať čistiace akcie, ktoré by sa mali vykonávať za každých podmienok.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Nakoniec je klauzula vykonaná pred príkazom try.

Vyhlásenie o zvýšení

Príkaz raise určuje argument, ktorý inicializuje objekt výnimky. Čiarka tu nasleduje za názvom výnimky a argumentom alebo n-tinou argumentu, ktorý nasleduje za čiarkou.

Syntax:

raise [Exception [, args [, traceback]]]

V tejto syntaxi je argument voliteľný a v čase vykonania je hodnota argumentu výnimka vždy žiadna.

Príklad:

Výnimkou v Pythone môže byť akákoľvek hodnota ako reťazec, trieda, číslo alebo objekt. Väčšina z týchto výnimiek vyvolaných jadrom Pythonu sú triedy s argumentom, ktorý je inštanciou triedy.

Dôležité chyby v Pythone

Typ chyby Popis
Aritmetická chyba ArithmeticError funguje ako základná trieda pre všetky aritmetické výnimky. Vyvoláva sa pre chyby v aritmetických operáciách.
ImportError ImportError sa vyvolá, keď sa pokúšate importovať modul, ktorý nie je prítomný. Tento druh výnimky nastane, ak ste pri písaní urobili chybu v názve modulu alebo v module, ktorý sa nenachádza v štandardnej ceste.
Chyba indexu IndexErroris sa zvýšil, keď sa pokúsite odkázať na sekvenciu, ktorá je mimo rozsahu.
KeyError Ak sa konkrétny kľúč nenájde v slovníku, vyvolá sa výnimka KeyError.
NameError NameError sa vyvolá, keď sa na názov odkazuje v kóde, ktorý nikdy neexistuje v lokálnom alebo globálnom mennom priestore.
ValueError Chyba hodnoty sa vyvolá, keď funkcia alebo vstavaná operácia prijme argument, ktorý môže byť správneho typu, ale nemá vhodnú hodnotu.
EOFerror Tento druh chyby sa zvyšuje, keď jedna zo zabudovaných funkcií (input () alebo raw_input ()) dosiahne stav EOF bez načítania akýchkoľvek údajov.
ZeroDivisonError Tento typ chyby vyvolaný delením alebo modulovaním nulou sa vyskytuje pre všetky numerické typy.
IOError- Tento druh chyby vyvolaný pri zlyhaní operácie vstupu / výstupu.
chyba syntaxe Chyby SyntaxErr vyvolané v prípade chyby v syntaxe Pythonu.
Chyba odsadenia Táto chyba sa vyskytla, keď nie je správne definované odsadenie

Ďalšie dôležité výnimky pre Python

Výnimka Popis
Aritmetická výnimka Aritmetická chyba, ako napríklad rozdelenie na nulu.
ArraylndexOutOfBoundsException Index poľa je mimo hranice.
ArrayStoreException Priradenie vám pomôže prvku poľa nekompatibilného typu.
ClassCastException Neplatné obsadenie
MlegalMonitorStateException Neplatná činnosť monitora, ako napríklad čakanie na odomknutom vlákne.
MlegalStateException Prostredie alebo aplikácia sú v nesprávnom stave.
ClassNotFoundException Trieda sa nenašla.
CloneNotSupportedException Pokus o klonovanie objektu, ktorý neimplementuje klonovateľné rozhranie.
Nezákonná výnimka prístupu Prístup do triedy je odmietnutý.
InstantiationException Vyskytuje sa pri pokuse o vytvorenie objektu rozhrania alebo abstraktnej triedy.
CloneNotSupportedException Pokus o klonovanie objektu, ktorý neimplementuje rozhranie.

Chyba vs. výnimky

Chyba Výnimky
Všetky chyby v Pythone sú nezačiarknuté. Medzi výnimky patrí začiarknutý aj nezačiarknutý typ.
Počas behu sa vyskytujú chyby, ktoré kompilátor nezná. Výnimky je možné obnoviť ich spracovaním pomocou blokov try-catch.
Chyby sú väčšinou spôsobené prostredím, v ktorom je aplikácia spustená. Samotná aplikácia spôsobuje výnimky.
Príklady: OutofMemoryError Príklady: začiarknuté výnimky, výnimka SQL, NullPointerException atď.

Zhrnutie

  • Výnimkou je chyba, ktorá sa stala počas vykonávania programu.
  • Výnimka naznačuje, že aj keď k udalosti môže dôjsť, tento typ udalosti sa stane zriedka.
  • Bežné príklady výnimiek sú 1) Delenie nulou, 2) Prístup k súboru, ktorý neexistuje, 3) Pridanie dvoch nekompatibilných typov.
  • Výnimkou je objekt Python, ktorý predstavuje chybu.
  • Príkaz try obsahuje kľúčové slovo try, za ktorým nasleduje dvojbodka (:) a sada kódu, v ktorých sa môžu vyskytnúť výnimky. Má jednu alebo viac doložiek.
  • Bloky úlovkov trvajú po jednom argumente, čo je typ výnimky, ktorú pravdepodobne zachytí.
  • Príkaz raise určuje argument, ktorý inicializuje objekt výnimky.
  • Nakoniec sa blok vždy vykoná bez ohľadu na to, či je výnimka vyhodená alebo nie.