Izjema je dogodek, ki nastane med izvajanjem programa za prekinitev ali spremembo običajnega poteka programa. Napaka na primer povzroči izjemo. Tako kot drugi programski jeziki tudi Python vsebuje veliko vgrajenih izjem. Te izjeme se pojavijo, če pride do napake med izvajanjem programa. Vrsta napake določa, katero izjemo je treba uveljaviti. Ko pride do izjeme, tolmač Python preveri, ali je izjema obravnavana; v nasprotnem primeru program prekine. Ta članek na različnih primerih pojasnjuje izjeme v Pythonu.
Vgrajene izjeme Python
Kot smo že omenili, ima Python veliko vgrajenih izjem, ki se pojavijo, ko pride do napake med izvajanjem programa. Vsaka izjema izhaja iz osnovnega razreda "Izjema". Sledi nekaj vgrajenih izjem Python, skupaj s kratkim opisom vsake vrste izjem:
Izjema | Opis |
---|---|
Izjema | Vsaka izjema izhaja iz tega razreda. |
Napaka pri uvozu | Ta izjema se pojavi, ko je določen modul uvožen in ga ni mogoče najti. |
EOFError | To je izjema ob koncu datoteke. Ta izjema se pojavi, ko je dosežen konec datoteke. |
ZeroDivisionError | Ta izjema se pojavi, če je število deljeno z nič. |
KeyError | Ta izjema se pojavi, če je določen ali uporabljen določen ključ, ki ni določen v slovarju. |
IndexError | Ta izjema se pojavi, ko je bil poskusen dostop do indeksa zaporedja, ki ni v obsegu. |
FloatingPointError | Ta izjema se pojavi, ko operacija s plavajočo vejico ni uspela. |
To je nekaj vgrajenih izjem v Pythonu. Za več informacij o uporabi vgrajenih izjem v Pythonu obiščite uradno dokumentacijo na naslovu https: // docs.python.org / 3 / library / izjeme.html.
Uporaba izjem v Pythonu
Izjeme v Pythonu se obdelujejo z uporabo stavka try. Delček kode, ki lahko vrže ali povzroči izjemo, je implementiran v poskusnem bloku. Poleg bloka try je za obdelavo izjeme implementiran blok razen. V bloku razen ujamemo izjemo in se odločimo, katero operacijo bomo izvedli, ko naletimo na to izjemo. Sintaksa zapisovanja poskusov in razen blokov je naslednja:
poskusite:izvedite operacijo ali funkcijo
razen:
funkcionalnost za obravnavo izjeme
Zdaj bomo v naš skript Python implementirali preprosto kodo z uporabo poskusov in razen blokov.
Tukaj bomo natisnili spremenljivko 'name', ki ni definirana. To sproži izjemo v bloku razen.
#implementing poskusni blokposkusite:
natisni (ime)
#implementing razen bloka
razen:
print ("Prišlo je do izjeme")
Izhod
Če ne pride do izjeme, se izvede samo poskusni blok. V bloku razen se natisne stavek, da je prišlo do izjeme.
Oglejmo si še en primer, kjer definiramo spremenljivko imena:
#defining ime spremenljivkename = "Označi"
#implementing poskusni blok
poskusite:
natisni (ime)
#implementing razen bloka
razen:
print ("Prišlo je do izjeme")
Izhod
V zgornjem primeru se izvede poskusni blok in preskoči blok razen, ker program ne sproži nobenih izjem. V našem programu lahko določimo toliko blokov, razen blokov. Vsak blok razen obravnava določeno vrsto izjeme.
#implementing poskusni blokposkusite:
natisni (ime)
#implementing razen bloka za ulov napake v imenu
razen NameError:
print ("Spremenljivka ni definirana")
#implementing razen bloka
razen:
print ("Prišlo je do napake, razen napake imena")
Izhod
V Pythonu je izjema osnovni razred za vse izjeme. Namesto da vpišemo ime določene izjeme v blok, lahko preprosto napišemo »Izjema« in na ta način ujamemo vse vrste izjem.
#implementing poskusni blokposkusite:
natisni (ime)
#implementing razen bloka za zajem napake
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing razen bloka
razen:
print ("Prišlo je do napake, razen napake imena")
Izhod
Exp.__class__ vrne ime razreda izjem.
Podobno si oglejmo primer razreda "ZeroDivisionError".
#implementing poskusni blokposkusite:
x = 1/0
natisni (x)
#implementing razen bloka za zajem napake
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing razen bloka
razen:
print ("Prišlo je do napake, razen napake imena")
Izhod
Blok else
Blok else se uporablja z bloki in poskusi. Blok else določa del kode, ki se izvede, če se poskusni blok uspešno izvede in ne pride do napake. Včasih bo morda treba natisniti sporočilo ali izvesti funkcijo, ko bo poskusni blok uspešno izveden. Iz tega razloga lahko izvedemo blok else s poskusi in razen blokov.
V tem primeru bomo v skriptu Python implementirali blok else.
#implementing poskusni blokposkusite:
x = 1/2
natisni (x)
#implementing razen bloka za zajem napake
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing blok else
sicer:
print ("Vse je šlo v redu")
Izhod
Blok else se izvede po uspešni izvedbi poskusnega bloka.
Poglejmo si zdaj še en primer z uporabo bloka else.
#implementing poskusni blokposkusite:
name = "Označi"
#implementing razen bloka za zajem napake
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing blok else
sicer:
print ("Ime je:", ime)
Izhod
V zgornjem primeru je spremenljivka imena definirana znotraj poskusnega bloka in je natisnjena v bloku else.
Končni blok
The končno blok vsebuje delček kode, ki ga je treba izvršiti ne glede na to, ali poskusni blok povzroči izjemo. Končni blok ni obvezen in se objavi z blokom try. Če smo na primer odprli besedilno datoteko za branje poskusnega bloka in se pojavi napaka ali izjema, je bolje, da datoteko zapremo v zadnji blok, tudi če pride do napake. Izvedimo zaključni blok v našem skriptu Python.
#implementing poskusni blokposkusite:
natisni (my_dict)
#implementing razen bloka za zajem napake
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing the final block
končno:
print ("To je zadnji blok")
print ("Končni blok je izveden")
Izhod
V izhodu je razvidno, da poskusni blok sproži izjemo. Vendar se zaključni blok izvede na koncu.
Zdaj odprimo besedilno datoteko v poskusnem bloku, ki sproži izjemo, medtem ko je datoteka, zaprta v zadnji blok.
#implementing poskusni blokposkusite:
fileObj = odprto ("mystudent.xml "," r ")
fileObj.iskati (-2)
print (datotekaObj.bralne vrstice ())
#implementing razen bloka
razen izjema kot exp:
tiskanje (exp.__razred__)
#implementing the final block
končno:
fileObj.zapri ()
print ("Datoteka je uspešno zaprta")
Izhod
Kot lahko vidite, je bila datoteka, ne glede na napako z vrednostjo, uspešno zaprta znotraj bloka final.
Povečajte izjemo
Čeprav se izjeme samodejno sprožijo, ko pride do napake, lahko v Pythonu izjeme dvignete tudi ročno. The dvigniti ključna beseda se uporablja za dvig ali vrnitev izjeme.
Zdaj bomo z uporabo ključne besede dvignili nekaj izjem. V naslednjem primeru je izveden pogoj if za preverjanje nenegativnih števil. Če obstajajo kakršna koli negativna števila, se vzpostavi izjema »Nenegativna števila niso dovoljena«.
#declaring dve številski spremenljivkištevilo1 = 20
število2 = -10
if ((num1<0) | (num2<0)):
dvigniti izjemo ("Nenegativne številke niso dovoljene")
sicer:
tiskanje (num1 + num2)
Izhod
Zaključek
Izjema se pojavi kot odgovor na napako med izvajanjem. V Pythonu lahko obvladujemo izjeme z uporabo poskusov in razen blokov. Ta članek je v različnih primerih pojasnil, kako uporabljati izjeme v Pythonu.