Python

Erandite käitlemine Pythonis

Erandite käitlemine Pythonis
Kui käivitame mis tahes koodi, mis sisaldab viga, kuvatakse viga väljundis, peatades programmi täitmise. Mõnda viga ei pruugi kasutajad tuvastada ja see võib nende jaoks ebasoovitava olukorra tekitada. Kuid kui viga saab kuvada kasutajatele arusaadavas vormingus, on neil vea põhjust lihtne teada saada. Igasuguses objektorienteeritud programmeerimises, proovima püüda või proovige lõpuks kinni püüda plokki kasutatakse vigade käsitlemiseks ja nende loetavas vormingus kuvamiseks, mida nimetatakse erandkäsitluseks. Kuidas saab Pythoni skriptis erandeid käsitseda, on näidatud selles õpetuses.

Süntaks:

proovige:
blokeeri ..
välja arvatud erand:
käitleja ..
muu:
blokeeri ..
lõpuks:
blokeeri ..

Siin, kui avaldiste käivitamisel ilmneb viga proovige blokeeritakse, siis luuakse erand ja visatakse viga vastavale välja arvatud käitleja. Ühes saab genereerida mitu viga proovige blokeerida ja siis tuleb kirjutada mitu välja arvatud käitlejad.  Avaldused muud plokk käivitatakse, kui proovige blokeerida. Avaldused lõpuks plokk käivitatakse, kui mõni viga ilmneb või seda ei juhtu. Erandkäsitluse korral muud ja lõpuks plokid pole hädavajalikud. Eri tüüpi erandite käsitlemist pythonis selgitatakse õpetuse järgmises osas.

Näide 1: Numbriandmete kinnitamiseks ühe prooviväljaku ploki kasutamine:

See näide näitab Pythonis erandite käsitlemise väga lihtsat kasutamist. Aastal proovige plokist võetakse kasutajalt kaks sisendit, üks on stringi väärtus ja teine ​​on arvuline väärtus.  Kui kasutaja sisestab teise sisendi arvväärtuse asemele mis tahes stringiväärtuse, siis ValueError erandi genereerib python3 ja kohandatud veateadet kuvatakse alates välja arvatud blokeerida.

#!/ usr / bin / env python3
# Määratlege prooviplokk
proovige:
# Võtke mis tahes andmeid stringina
nimi = sisestus ("Sisestage oma nimi: \ n")
# Võtke arvandmed
vanus = int (sisend ("Sisestage oma vanus: \ n"))
# Printige vormindatud andmed koos nime ja vanusega
print ("Tere% s, olete% s aastane."% (nimi, vanus))
# käsitsevad sisendvigu
välja arvatud (ValueError):
# Prindi kohandatud tõrketeade
print ("Vale sisend! Vanusena peate sisestama numbri.")

Väljund:

Skript käivitatakse järgmises väljundis kaks korda vale ja õige sisendiga. Esimene kord, kui kasutaja kirjutab 'Kolmkümmend üks' vanuseväärtusena teisele sisendile, mis võtab arvulise väärtuse, siis a ValueError genereeritakse ja veateadet kuvatakse plokist välja arvatud. Teist korda ei teki õigete sisendväärtuste jaoks viga.

Näide 2: mitme vea, välja arvatud ploki kasutamine mitme vea käitlemiseks:

Selles näites on näidatud, kuidas saate mitme vea töötlemiseks kasutada mitut, välja arvatud plokk.  Selles skriptis käsitletakse kahte tüüpi vigu. Failinimi võetakse kasutaja sisendiks lugemiseks. Kui faili pole olemas, siis see genereeritakse IO viga erand ja kui fail on olemas, kuid tühi, siis tekitab see kohandatud erandi. Selleks kasutatakse selles skriptis kahte, välja arvatud plokid. Kui ühtegi veast ei esine, kuvatakse faili sisu.

#!/ usr / bin / env python3
# OS-i mooduli importimine
impordi os
# Määratlege prooviplokk
proovige:
# Võtke sisendiks failinimi
failinimi = input ('Sisesta failinimi \ n')
# Avage fail lugemiseks
file_handler = avatud (faili nimi)
# Määra otsinguponter vahemikust 0 kuni faili lõpuni
file_handler.otsi (0, os.SEEK_END)
# Lugege faili suurust baitides
suurus = failihaldur.ütle ()
# Printige faili sisu ja faili märkide arv
kui (suurus> 0):
# Määrake mõtleja faili algusesse
file_handler.otsima (0)
# Lugege ja salvestage faili sisu muutujas
file_content = failihaldur.loe ()
print ("\ nAllpool toodud faili sisu \ n")
print (faili sisu)
print ("Faili suurus on% d baiti"% size)
muu:
# Tõstke erand, kui fail on tühi
tõsta erandit ('Failil pole sisu.')
# Printige veateade, kui faili pole olemas
välja arvatud viga IOError:
print (viga)
# Kui fail on tühi, printige veateade
välja arvatud erand kui e:
print ('Viga:% s'% e)
# Printige teade, kui viga pole
muu:
print ('Viga ei esine')

Väljund:

Skripti täidetakse kolm korda. Esimesel korral antakse failinimi, mida pole olemas ja väljundil kuvatakse IOError-teade. Teist korda antakse failinimi, mis on olemas, kuid millel pole sisu ja väljund näitab kohandatud teadet. Kolmandal korral antakse failinimi, mis on olemas ja sisaldab teksti. Väljund näitab faili sisu.

Näide 3: Jagamisvigade käsitlemiseks try-paitsi-lõpuks ploki kasutamine

Näide näitab ploki try-paitsi-lõpuks kasutamist jagamisvigade käsitlemiseks. Kaks arvväärtust võetakse sisendiks ja jagatakse esimene sisestus prooviplokis teise sisendiga. Siin võib esineda kahte tüüpi vigu. Üks on ValueError millal kasutaja sisestab mis tahes väärtuse ilma numbrita ja teine ​​on ZeroDivisionError millal kasutaja võtab 0 teise sisendina.

#!/ usr / bin / env python3
# Määratlege prooviplokk
proovige:
# Sisestage kaks ujukarvu
n1 = ujuk (sisend ('Sisesta number \ n'))
n2 = ujuk (sisend ('Sisesta number \ n'))
# Jagage need numbrid
jagunemine = n1 / n2
# Käsitsege vigu
välja arvatud (ZeroDivisionError, ValueError):
print ("Jagatud nullveaga või väärtus pole arv")
# Printige teade, kui viga ei esine
muu:
print ("Jagamise tulemus on% f"% jagamine)
# Trüki teade, kui ilmneb tõrge või seda ei juhtu
lõpuks:
print ("lõpp")

Väljund:

Siin käivitatakse skripti kaks korda nii õigete sisenditega kui ka teise sisendina 0. Niisiis genereeritakse teine ​​kord erand ja kuvatakse tõrketeade.

Järeldus:

See õpetus näitab uute Pythoni kasutajate põhilisi erandite käitlemise protsesse python3-s. Pärast ülaltoodud näidete harjutamist saavad lugejad aru, mis on erandite käsitlemine ja kuidas seda Pythoni skriptis rakendada.

Parimad mängud, mida saab mängida käte jälgimisega
Oculus Quest tutvustas hiljuti suurepärast ideed käsitsi jälgimisest ilma kontrolleriteta. Üha suurema hulga mängude ja tegevustega, mis toetavad kas ...
Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...
Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...