Erandiks on sündmus, mis tekib programmi käivitamisel programmi normaalse voo lõpetamiseks või muutmiseks. Näiteks viga tekitab erandi. Nagu teisedki programmeerimiskeeled, sisaldab ka Python palju sisseehitatud erandeid. Need erandid ilmnevad juhul, kui programmi käivitamisel ilmneb viga. Vea tüüp määrab, milline erand tuleb tõsta. Erandi ilmnemisel kontrollib Pythoni tõlk, kas erandit käsitletakse; kui ei, lõpetab see programmi. Selles artiklis selgitatakse Pythoni erandeid erinevate näidete kaudu.
Sisseehitatud Pythoni erandid
Nagu varem arutletud, on Pythonil palju sisseehitatud erandeid, mis tekivad siis, kui tõrge ilmneb programmi käivitamisel. Iga erand on tuletatud baasklassist “Erand”. Järgnevad sisaldavad mõnda sisseehitatud Pythoni erandit koos iga eranditüübi lühikirjeldusega:
Erand | Kirjeldus |
---|---|
Erand | Kõik erandid on tuletatud sellest klassist. |
ImportError | See erand ilmneb konkreetse mooduli importimisel ja seda ei leita. |
EOFViga | See on faili lõpu erand. See erand ilmneb faili lõppu jõudmisel. |
ZeroDivisionError | See erand tõstetakse, kui arv jagatakse nulliga. |
KeyError | See erand on tõstatatud, kui määratakse või kasutatakse teatud võtit, mida sõnastikus pole määratletud. |
IndexError | See erand on tõstatatud, kui on püütud juurdepääsu järjestuse indeksile, mis ei kuulu vahemikku. |
FloatingPointError | See erand tõstetakse üles siis, kui ujukomaoperatsioon ebaõnnestub. |
Need on mõned Pythoni sisseehitatud erandid. Pythoni sisseehitatud erandite kasutamise kohta lisateabe saamiseks külastage ametlikku dokumentatsiooni, mis asub aadressil https: // docs.püüton.org / 3 / library / erandid.HTML.
Erandikasutus Pythonis
Pythoni erandeid käsitletakse try-lause abil. Koodiosa, mis võib erandi visata või tõsta, rakendatakse prooviplokis. Proovibloki kõrval on erandi käsitlemiseks rakendatud erandplokk. Välja arvatud plokis tabame erandi ja otsustame, millist toimingut selle konkreetse erandiga kokku puutudes teha. Proovi ja välja arvatud plokkide kirjutamise süntaks on järgmine:
proovige:toimingu või funktsiooni täitmiseks
välja arvatud:
funktsionaalsus erandi käsitlemiseks
Nüüd juurutame oma Pythoni skripti lihtsa koodi, kasutades proovi ja välja arvatud plokke.
Siit printime muutuja 'name', mis pole määratletud. See tekitab erandi plokis, välja arvatud.
#proovi ploki rakendamineproovige:
Prindi nimi)
# välja arvatud plokk
välja arvatud:
print ("Tekkis erand")
Väljund
Kui erandit ei esine, käivitatakse ainult prooviplokk. Välja arvatud plokis trükitakse avaldus erandi toimumise kohta.
Vaatame veel ühte näidet, kus määratletakse nimemuutuja:
#define name muutujanimi = "Märgi"
#proovi ploki rakendamine
proovige:
Prindi nimi)
#rakendab välja arvatud plokk
välja arvatud:
print ("Tekkis erand")
Väljund
Ülaltoodud näites käivitatakse prooviplokk ja välja arvatud plokk jäetakse vahele, kuna programm ei tekita erandeid. Saame oma programmis määratleda nii palju kui välja ei tahta plokke. Iga välja arvatud plokk käsitleb teatud tüüpi erandeid.
#proovi ploki rakendamineproovige:
Prindi nimi)
#nimevea tabamiseks välja arvatud plokk
välja arvatud NameError:
print ("Muutuja pole määratletud")
# välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")
Väljund
Pythonis on Exception kõigi erandite põhiklass. Konkreetse erandi nime välja arvatud plokki kirjutamise asemel võime lihtsalt kirjutada “Erand” ja püüda igat tüüpi erandeid sel viisil.
#proovi ploki rakendamineproovige:
Prindi nimi)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")
Väljund
Eksp.__class__ tagastab erandi klassi nime.
Samamoodi vaatame klassi “ZeroDivisionError” näidet.
#proovi ploki rakendamineproovige:
x = 1/0
print (x)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
#rakendab välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")
Väljund
Teine Blokeeri
Ülejäänud plokki kasutatakse proovimis- ja erandiplokkidega. Teine plokk määratleb kooditüki, mis käivitatakse, kui prooviplokk käivitatakse edukalt ja viga ei toimu. Mõnikord peate võib-olla proovima sõnumi printima või funktsiooni täitma, kui prooviplokk on edukalt täidetud. Sel põhjusel saame rakendada muu ploki proovimise ja väljaarvamise plokkidega.
Selles näites rakendame muu ploki meie Pythoni skriptis.
#proovi ploki rakendamineproovige:
x = 1/2
print (x)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# muu ploki rakendamine
muu:
print ("Kõik läks hästi")
Väljund
Muu plokk käivitatakse pärast prooviploki edukat täitmist.
Vaatame nüüd teist plokki muu näidet.
#proovi ploki rakendamineproovige:
nimi = "Märgi"
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# muu ploki rakendamine
muu:
print ("Nimi on:", nimi)
Väljund
Ülaltoodud näites on nimemuutuja defineeritud prooviploki sees ja trükitud muu plokki.
Lõpuks Blokeeri
The lõpuks plokk sisaldab kooditükki, mis tuleb käivitada olenemata sellest, kas prooviplokk tekitab erandi. Viimane plokk on valikuline ja deklareeritakse koos prooviplokiga. Näiteks kui oleme proovifloki lugemiseks avanud tekstifaili ja see tekitab tõrke või erandi, on parem fail lisada viimasesse plokki, isegi kui tõrge ilmneb. Rakendagem oma Pythoni skriptis viimast plokki.
#proovi ploki rakendamineproovige:
print (my_dict)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# viimase bloki rakendamine
lõpuks:
print ("See on viimane plokk")
print ("Viimane plokk on täidetud")
Väljund
Väljundis on näha, et prooviplokk tekitab erandi. Lõplik blokk täidetakse siiski lõpus.
Nüüd avage prooviplokis tekstifail, mis tekitab erandi, samas kui fail, mis on suletud viimasesse plokki.
#proovi ploki rakendamineproovige:
fileObj = avatud ("minuõpilane.xml "," r ")
fileObj.otsi (-2)
print (failObj.readlines ())
# välja arvatud plokk
välja arvatud erand exp:
print (eksp.__klass__)
# viimase bloki rakendamine
lõpuks:
fileObj.Sulge()
print ("Fail on edukalt suletud")
Väljund
Nagu näete, on väärtusveast hoolimata fail viimase ploki sees edukalt suletud.
Tõsta erand
Ehkki vea ilmnemisel tõstetakse erandeid automaatselt, saate Pythonis erandeid ka käsitsi tõsta. The tõsta märksõna kasutatakse erandi tõstmiseks või viskamiseks.
Tõstame nüüd tõstmise märksõna abil välja mõned erandid. Järgmises näites on tingimus if rakendatud mitte-negatiivsete arvude kontrollimiseks. Kui on olemas mittenegatiivseid arve, tõstetakse erand „Mittegatiivsed arvud pole lubatud“.
#deklaratsioon kahe arvumuutujaganum1 = 20
num2 = -10
kui ((number1<0) | (num2<0)):
tõsta erandit ("Mitte-negatiivsed arvud pole lubatud")
muu:
prindi (num1 + num2)
Väljund
Järeldus
Erand ilmneb vastusena käitamisaja veale. Pythonis saame eranditega hakkama, kasutades try ja va plokke. Selles artiklis selgitati Pythonis erandite kasutamist erinevate näidete kaudu.