Výnimkou je udalosť, ktorá vznikne počas vykonávania programu za účelom ukončenia alebo zmeny normálneho priebehu programu. Napríklad chyba vyvoláva výnimku. Rovnako ako iné programovacie jazyky, aj Python obsahuje mnoho zabudovaných výnimiek. Tieto výnimky sa vyvolávajú, ak sa pri vykonávaní programu vyskytne chyba. Typ chyby určuje, ktorá výnimka sa má vyvolať. Keď dôjde k výnimke, tlmočník Pythonu skontroluje, či je výnimka spracovaná; ak nie, ukončí program. Tento článok vysvetľuje výnimky v Pythone na rôznych príkladoch.
Vstavané výnimky pre Python
Ako sme už spomínali, Python má veľa zabudovaných výnimiek, ktoré sa vyvolajú, keď sa počas vykonávania programu vyskytne chyba. Každá výnimka je odvodená od základnej triedy „Výnimka“. Nasleduje niekoľko zabudovaných výnimiek Pythonu spolu s krátkym popisom každého typu výnimky:
Výnimka | Popis |
---|---|
Výnimka | Každá výnimka je odvodená z tejto triedy. |
ImportError | Táto výnimka sa vyvolá pri importovaní konkrétneho modulu a nenájde sa. |
EOFError | Toto je výnimka na konci súboru. Táto výnimka nastane, keď sa dosiahne koniec súboru. |
ZeroDivisionError | Táto výnimka sa vyvolá, keď sa číslo vydelí nulou. |
KeyError | Táto výnimka sa vyvolá, ak je zadaný alebo použitý určitý kľúč, ktorý nie je definovaný v slovníku. |
IndexError | Táto výnimka sa vyvolá pri pokuse o prístup k indexu sekvencie, ktorý sa nenachádza v rozsahu. |
FloatingPointError | Táto výnimka sa vyvolá pri zlyhaní operácie s pohyblivou rádovou čiarkou. |
Toto sú niektoré zo zabudovaných výnimiek v Pythone. Ďalšie informácie o používaní zabudovaných výnimiek v jazyku Python nájdete v oficiálnej dokumentácii, ktorá sa nachádza na adrese https: // docs.pytón.org / 3 / knižnica / výnimky.html.
Použitie výnimiek v Pythone
Výnimky v Pythone sa vybavujú pomocou príkazu try. Kus kódu, ktorý môže vyvolať alebo vyvolať výnimku, je implementovaný v bloku try. Vedľa bloku try je na spracovanie výnimky implementovaný blok okrem. V bloku s výnimkou zachytíme výnimku a rozhodneme sa, ktorú operáciu vykonáme, keď narazíme na konkrétnu výnimku. Syntax zápisu blokov try a okrem je nasledovná:
skúste:vykonať operáciu alebo funkciu
okrem:
na zvládnutie výnimky
Teraz implementujeme jednoduchý kód do nášho skriptu Python pomocou blokov try a except.
Tu vytlačíme premennú „name“, ktorá nie je definovaná. To vyvoláva výnimku v bloku kromě.
# implementácia bloku tryskúste:
tlač (meno)
# implementácia bloku okrem
okrem:
tlač („Vyskytla sa výnimka“)
Výkon
Ak nenastane žiadna výnimka, vykoná sa iba blok try. V bloku kromě je vytlačené vyhlásenie, že došlo k výnimke.
Pozrime sa na ďalší príklad, kde definujeme premennú názvu:
# definovanie premennej názvuname = "Označiť"
# implementácia bloku try
skúste:
tlač (meno)
# implementácia bloku okrem
okrem:
tlač („Vyskytla sa výnimka“)
Výkon
Vo vyššie uvedenom príklade sa vykoná blok try a blok s výnimkou sa preskočí, pretože program nevyvoláva žiadne výnimky. V našom programe môžeme definovať toľko blokov okrem blokov, koľko chceme. Každý blok s výnimkou spracováva konkrétny druh výnimky.
# implementácia bloku tryskúste:
tlač (meno)
#implementácia bloku except na zachytenie chyby názvu
okrem NameError:
print ("Premenná nie je definovaná")
# implementácia bloku okrem
okrem:
print („Niečo sa pokazilo, okrem chyby názvu“)
Výkon
V Pythone je výnimka základnou triedou pre všetky výnimky. Namiesto písania názvu konkrétnej výnimky do bloku kromě môžeme jednoducho napísať „Výnimka“ a týmto spôsobom zachytiť každý typ výnimky.
# implementácia bloku tryskúste:
tlač (meno)
#implementácia bloku except na zachytenie chyby
okrem Výnimky ako exp:
tlač (exp.__trieda__)
# implementácia bloku okrem
okrem:
print („Niečo sa pokazilo, okrem chyby názvu“)
Výkon
Exp.__class__ vráti názov triedy výnimky.
Podobne sa pozrime na príklad triedy „ZeroDivisionError“.
# implementácia bloku tryskúste:
x = 1/0
tlačiť (x)
#implementácia bloku okrem na zachytenie chyby
okrem Výnimky ako exp:
tlač (exp.__trieda__)
# implementácia bloku okrem
okrem:
print („Niečo sa pokazilo, okrem chyby názvu“)
Výkon
The else Block
Blok else sa používa s blokmi try a výnimka. Blok else definuje časť kódu, ktorá sa vykoná, ak sa blok try úspešne vykoná a nenastane chyba. Po úspešnom vykonaní bloku tryskania možno budete musieť vytlačiť správu alebo vykonať funkciu. Z tohto dôvodu môžeme blok else implementovať blokmi try a except.
V tomto príklade implementujeme blok else v našom skripte Python.
# implementácia bloku tryskúste:
x = 1/2
tlačiť (x)
#implementácia bloku okrem na zachytenie chyby
okrem Výnimky ako exp:
tlač (exp.__trieda__)
#implementácia bloku else
inak:
tlač („Všetko prebehlo v poriadku“)
Výkon
Blok else sa vykoná po úspešnom vykonaní bloku try.
Pozrime sa teraz na ďalší príklad pomocou bloku else.
# implementácia bloku tryskúste:
name = "Označiť"
#implementácia bloku except na zachytenie chyby
okrem Výnimky ako exp:
tlač (exp.__trieda__)
#implementácia bloku else
inak:
print ("Meno je:", meno)
Výkon
Vo vyššie uvedenom príklade je premenná názvu definovaná vo vnútri bloku try a je vytlačená v bloku else.
Konečne Block
The konečne blok obsahuje časť kódu, ktorá sa musí vykonať bez ohľadu na to, či blok try vyvolá výnimku. Blok nakoniec je voliteľný a je deklarovaný blokom try. Napríklad, ak sme otvorili textový súbor na čítanie bloku try a nastala chyba alebo výnimka, je lepšie súbor uzavrieť do bloku konečne, aj keď sa chyba vyskytne. Implementujme blok konečne v našom skripte Python.
# implementácia bloku tryskúste:
print (my_dict)
#implementácia bloku except na zachytenie chyby
okrem Výnimky ako exp:
tlač (exp.__trieda__)
# implementácia bloku konečne
nakoniec:
print („Toto je konečne blok“)
print ("Konečný blok je vykonaný")
Výkon
Na výstupe je vidieť, že blok try vyvolá výnimku. Nakoniec sa však blok vykoná na konci.
Teraz otvorme textový súbor v bloku try, ktorý vyvolá výnimku, zatiaľ čo súbor bude uzavretý v bloku konečne.
# implementácia bloku tryskúste:
fileObj = open ("môj študent.xml "," r ")
fileObj.hľadať (-2)
tlačiť (fileObj.readlines ())
# implementácia bloku okrem
okrem Výnimky ako exp:
tlač (exp.__trieda__)
# implementácia bloku konečne
nakoniec:
fileObj.Zavrieť()
print ("Súbor je úspešne uzavretý")
Výkon
Ako vidíte, bez ohľadu na chybu hodnoty bol súbor úspešne uzavretý vo vnútri konečne bloku.
Zvýšiť výnimku
Aj keď sa výnimky vyvolávajú automaticky, keď sa vyskytne chyba, v Pythone môžete výnimky vyvolávať aj ručne. The zvýšiť kľúčové slovo sa používa na vyvolanie alebo vyvolanie výnimky.
Niektoré výnimky teraz vyvoláme pomocou kľúčového slova Raise. V nasledujúcom príklade je implementovaná podmienka if na kontrolu nezáporných čísel. Ak existujú nezáporné čísla, potom sa vyvolá výnimka „Nezáporné čísla nie sú povolené“.
# deklarovanie dvoch číselných premennýchnum1 = 20
num2 = -10
if ((číslo1<0) | (num2<0)):
zvýšiť výnimku („Nezáporné čísla nie sú povolené“)
inak:
tlač (num1 + num2)
Výkon
Záver
Výnimka nastane v reakcii na chybu za behu programu. V Pythone môžeme výnimky spracovať pomocou blokov try a except. Tento článok vysvetľuje, ako používať výnimky v Pythone, na rôznych príkladoch.