Izņēmums ir notikums, kas rodas programmas izpildes laikā, lai pārtrauktu vai mainītu parasto programmas plūsmu. Piemēram, kļūda rada izņēmumu. Tāpat kā citas programmēšanas valodas, Python satur daudz iebūvētu izņēmumu. Šie izņēmumi tiek parādīti, ja, izpildot programmu, rodas kļūda. Kļūdas veids nosaka, kurš izņēmums ir izvirzāms. Kad rodas izņēmums, Python tulks pārbauda, vai izņēmums tiek apstrādāts; ja nē, tas pārtrauc programmu. Šajā rakstā ir izskaidroti Python izņēmumi, izmantojot dažādus piemērus.
Iebūvēti Python izņēmumi
Kā tika apspriests iepriekš, Python ir daudz iebūvētu izņēmumu, kas tiek parādīti, kad programmas izpildes laikā rodas kļūda. Katrs izņēmums ir iegūts no “Exception” bāzes klases. Tālāk ir iekļauti daži iebūvēti Python izņēmumi kopā ar īsu katra izņēmuma veida aprakstu:
Izņēmums | Apraksts |
---|---|
Izņēmums | Katrs izņēmums ir atvasināts no šīs klases. |
ImportError | Šis izņēmums tiek parādīts, importējot noteiktu moduli, un tas nav atrasts. |
EOFError | Šis ir faila beigu izņēmums. Šis izņēmums rodas, kad ir sasniegts faila beigas. |
ZeroDivisionError | Šis izņēmums tiek izvirzīts, kad skaitlis tiek dalīts ar nulli. |
KeyError | Šis izņēmums tiek izvirzīts, ja tiek norādīta vai izmantota noteikta atslēga, kas nav definēta vārdnīcā. |
IndexError | Šis izņēmums tiek izvirzīts, kad ir mēģināta piekļūt virknes indeksam, kas nav diapazonā. |
FloatingPointError | Šis izņēmums tiek izvirzīts, ja peldošā komata darbība ir neveiksmīga. |
Šie ir daži no Python iebūvētajiem izņēmumiem. Lūdzu, apmeklējiet oficiālo dokumentāciju, lai iegūtu papildinformāciju par iebūvēto izņēmumu izmantošanu Python, kas atrodas vietnē https: // docs.pitons.org / 3 / library / izņēmumi.html.
Izņēmuma izmantošana Python
Izņēmumi Python tiek apstrādāti, izmantojot paziņojumu try. Koda gabals, kas var mest vai izraisīt izņēmumu, tiek ieviests mēģinājuma blokā. Blakus mēģinājuma blokam tiek ieviests izņēmuma bloks, lai apstrādātu izņēmumu. Izņēmumu blokā mēs noķeram izņēmumu un izlemjam, kādu darbību veikt, kad sastopamies ar konkrēto izņēmumu. Mēģinājuma un izņemot bloku rakstīšanas sintakse ir šāda:
mēģiniet:veikt darbību vai funkciju
izņemot:
funkcionalitāte, lai apstrādātu izņēmumu
Tagad mēs ieviesīsim vienkāršu kodu mūsu Python skriptā, izmantojot mēģinājumus un izņemot blokus.
Šeit mēs izdrukāsim “name” mainīgo, kas nav definēts. Tas rada izņēmumu, izņemot bloku.
#mēģinājuma bloka ieviešanamēģiniet:
drukāt (nosaukums)
#ieviešot bloku, izņemot
izņemot:
drukāt ("Notika izņēmums")
Rezultāts
Ja nenotiek izņēmums, tiek izpildīts tikai mēģinājuma bloks. Blokā Izņemot, tiek izdrukāts paziņojums, ka ir noticis izņēmums.
Apskatīsim vēl vienu piemēru, kur mēs definējam nosaukuma mainīgo:
#defining nosaukuma mainīgaisname = "Atzīmēt"
#mēģinājuma bloka ieviešana
mēģiniet:
drukāt (nosaukums)
#ieviešot izņemot bloku
izņemot:
drukāt ("Notika izņēmums")
Rezultāts
Iepriekš minētajā piemērā mēģinājuma bloks tiek izpildīts, un izņēmuma bloks tiek izlaists, jo programma neizraisa nekādus izņēmumus. Mēs savā programmā varam definēt tik daudz, cik vien vēlaties blokus. Katrs, izņemot bloku, apstrādā noteikta veida izņēmumus.
#mēģinājuma bloka ieviešanamēģiniet:
drukāt (nosaukums)
#implementing izņemot bloku, lai panāktu nosaukuma kļūdu
izņemot NameError:
print ("Mainīgais nav definēts")
#ieviešot izņemot bloku
izņemot:
drukāt ("Kaut kas notika nepareizi, izņemot nosaukuma kļūdu")
Rezultāts
Programmā Python izņēmums ir visu izņēmumu pamatklase. Tā vietā, lai ierakstītu konkrēta izņēmuma nosaukumu blokā, mēs varam vienkārši ierakstīt “Izņēmums” un šādā veidā noķert visus izņēmuma veidus.
#mēģinājuma bloka ieviešanamēģiniet:
drukāt (nosaukums)
#ieviešot bloku, izņemot kļūdu
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ieviešot izņemot bloku
izņemot:
drukāt ("Kaut kas notika nepareizi, izņemot nosaukuma kļūdu")
Rezultāts
Eksp.__class__ atgriež izņēmuma klases nosaukumu.
Apskatīsim arī klases “ZeroDivisionError” piemēru.
#mēģinājuma bloka ieviešanamēģiniet:
x = 1/0
drukāt (x)
#ieviešot bloku, izņemot kļūdu
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ieviešot izņemot bloku
izņemot:
drukāt ("Kaut kas notika nepareizi, izņemot nosaukuma kļūdu")
Rezultāts
Cits Bloķēt
Cits bloks tiek izmantots ar izmēģinājuma un izņēmuma blokiem. Cits bloks nosaka koda fragmentu, kas tiek izpildīts, ja mēģinājuma bloks tiek izpildīts veiksmīgi un nenotiek kļūda. Dažreiz, kad mēģinājuma bloks ir veiksmīgi izpildīts, jums var būt nepieciešams izdrukāt ziņojumu vai veikt kādu funkciju. Šī iemesla dēļ mēs varam ieviest pārējo bloku ar mēģinājumu un izņemot blokus.
Šajā piemērā mēs ieviesīsim citu bloku mūsu Python skriptā.
#mēģinājuma bloka ieviešanamēģiniet:
x = 1/2
drukāt (x)
#ieviešot bloku, izņemot kļūdu
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ml. pārējā bloka ieviešana
cits:
drukāt ("Viss noritēja labi")
Rezultāts
Cits bloks tiek izpildīts pēc mēģinājuma veiksmīgas izpildes.
Apskatīsim citu piemēru, izmantojot citu bloku.
#mēģinājuma bloka ieviešanamēģiniet:
name = "Atzīmēt"
#ieviešot bloku, izņemot kļūdu
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ml. pārējā bloka ieviešana
cits:
drukāt ("Nosaukums ir:", nosaukums)
Rezultāts
Iepriekš minētajā piemērā nosaukuma mainīgais ir definēts mēģinājuma blokā un tiek drukāts citā blokā.
Visbeidzot Bloķēt
The beidzot bloks satur koda daļu, kas jāizpilda neatkarīgi no tā, vai mēģinājuma bloks rada izņēmumu. Pēdējais bloks nav obligāts un tiek deklarēts kopā ar mēģinājuma bloku. Piemēram, ja mēs esam atvēruši teksta failu, lai lasītu mēģinājuma bloku, un tas rada kļūdu vai izņēmumu, labāk ir ievietot failu pēdējā blokā, pat ja rodas kļūda. Īstenosim mūsu Python skripta pēdējo bloku.
#mēģinājuma bloka ieviešanamēģiniet:
izdrukāt (my_dict)
#ieviešot bloku, izņemot kļūdu
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ieviešot beidzamo bloku
visbeidzot:
drukāt ("Šis ir pēdējais bloks")
drukāt ("Pēdējais bloks tiek izpildīts")
Rezultāts
Izejā redzams, ka mēģinājuma bloks rada izņēmumu. Tomēr pēdējais bloks tiek izpildīts beigās.
Tagad mēģinājuma blokā atveriet teksta failu, kas rada izņēmumu, bet fails, kas atrodas pēdējā blokā.
#mēģinājuma bloka ieviešanamēģiniet:
fileObj = open ("mans students.xml "," r ")
fileObj.meklēt (-2)
drukāt (fileObj.readlines ())
#ieviešot izņemot bloku
izņemot izņēmumu kā exp:
izdruka (exp.__klase__)
#ieviešot beidzamo bloku
visbeidzot:
fileObj.aizvērt ()
drukāt ("Fails ir veiksmīgi aizvērts")
Rezultāts
Kā redzat, neatkarīgi no vērtības kļūdas, fails ir veiksmīgi aizvērts pēdējā blokā.
Paaugstināt izņēmumu
Lai gan kļūdas gadījumā izņēmumi tiek izvirzīti automātiski, Python izņēmumus varat arī paaugstināt manuāli. The paaugstināt atslēgvārds tiek izmantots, lai palielinātu vai izmestu izņēmumu.
Tagad mēs izmantosim dažus izņēmumus, izmantojot paaugstināšanas atslēgvārdu. Šajā piemērā ir ieviests nosacījums if, lai pārbaudītu skaitļus, kas nav negatīvi. Ja pastāv kādi skaitļi, kas nav negatīvi, tiek izcelts izņēmums “Ne-negatīvi skaitļi nav atļauti”.
#deklarējot divus skaitļu mainīgosnum1 = 20
num2 = -10
ja ((num1<0) | (num2<0)):
paaugstināt izņēmumu ("Ne-negatīvi skaitļi nav atļauti")
cits:
drukāt (num1 + num2)
Rezultāts
Secinājums
Izņēmums rodas, reaģējot uz kļūdu izpildes laikā. Programmā Python mēs varam rīkoties ar izņēmumiem, izmantojot try un izņemot blokus. Šajā rakstā, izmantojot dažādus piemērus, tika paskaidrots, kā Python izmantot izņēmumus.