Č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:
- skús
- chytiť
- konečne
- 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.