Python

Python izņēmums

Python izņēmums

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šana
mēģ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īgais
name = "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šana
mēģ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šana
mēģ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šana
mēģ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šana
mēģ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šana
mēģ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šana
mēģ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šana
mēģ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īgos
num1 = 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.

Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...