Python

Unntakshåndtering i Python

Unntakshåndtering i Python
Når vi kjører en kode som inneholder feil, vises feilen i utdataene ved å stoppe kjøringen av programmet. Noen feil gjenkjennes kanskje ikke av brukerne og skaper en uønsket situasjon for dem. Men hvis feilen kan vises i et forståelig format for brukerne, er det lett for dem å vite årsaken til feilen. I enhver objektorientert programmering, prøvefangst eller prøv-fang-endelig block brukes til å håndtere feil og vise dem i et lesbart format som kalles unntaksbehandling. Hvordan unntakshåndtering kan gjøres i Python-skript, vises i denne veiledningen.

Syntaks:

prøve:
blokkere…
unntatt unntak:
behandler ..
ellers:
blokkere…
endelig:
blokkere…

Her, hvis det oppstår feil under utsettelsen av prøve blokkere, vil et unntak bli generert og kaste feilen til den tilsvarende unntatt behandler. Flere feil kan genereres i en enkelt prøve blokker og da må du skrive flere unntatt håndterere.  Uttalelsene fra ellers blokken vil bli utført hvis det ikke oppstår noen feil i prøve blokkere. Uttalelsene fra endelig blokken vil bli utført hvis det oppstår feil eller ikke. For unntakshåndtering, bruk ellers og endelig blokker er ikke viktig. Ulike typer unntakshåndtering i python blir forklart i neste del av opplæringen.

Eksempel 1: Bruk av en enkelt prøve-unntatt blokk for å validere numeriske data:

Dette eksemplet viser den veldig enkle bruken av unntaksbehandling i Python. I prøve blokk, to innganger vil bli hentet fra brukeren, en er en strengverdi og en annen er en numerisk verdi.  Hvis brukeren skriver inn en strengverdi i stedet for numerisk verdi for den andre inngangen, vil ValueError unntak vil bli generert av python3 og en tilpasset feilmelding vises fra unntatt blokkere.

#!/ usr / bin / env python3
# Definer prøveblokken
prøve:
# Ta data som en streng
name = input ("Skriv inn navnet ditt: \ n")
# Ta noen numeriske data
age = int (input ("Skriv inn din alder: \ n"))
# Skriv ut de formaterte dataene med navn og alder
print ("Hei% s, du er% s år gammel." %(navn Alder))
# håndteringsfeil
unntatt (ValueError):
# Skriv ut tilpasset feilmelding
utskrift ("Feil inngang! Du må skrive inn et tall som din alder.")

Produksjon:

Skriptet utføres to ganger i følgende utgang med feil inngang og riktig inngang. Første gang, når brukertypen 'Trettien' som aldersverdi for den andre inngangen som tar numerisk verdi da a ValueError genereres og feilmeldingen vises fra den unntatte blokken. Andre gang genereres ingen feil for riktige inngangsverdier.

Eksempel 2: Bruk av flere bortsett fra blokker for å håndtere flere feil:

Hvordan du kan bruke flere bortsett fra blokker for å håndtere flere feil, vises i dette eksemplet.  To typer feil blir håndtert i dette skriptet. Et filnavn blir tatt som input fra brukeren for lesing. Hvis filen ikke eksisterer, vil den genereres en IOError unntak, og hvis filen eksisterer, men er tom, vil den heve et tilpasset unntak. For dette brukes to unntatte blokker i dette skriptet. Når ingen av feilene oppstår, vises innholdet i filen.

#!/ usr / bin / env python3
# Importer os-modul
importer os
# Definer prøveblokken
prøve:
# Ta filnavnet som inndata
filnavn = input ('Skriv inn et filnavn \ n')
# Åpne filen for lesing
file_handler = åpen (filnavn)
# Still søkeponteren fra 0 til slutten av filen
filhåndterer.søk (0, os.SEEK_END)
# Les størrelsen på filen i byte
størrelse = filhåndterer.fortelle()
# Skriv ut filinnholdet og antall tegn i filen
hvis (størrelse> 0):
# Sett ponteren til starten av filen
filhåndterer.søk (0)
# Les og lagre innholdet i filen i en variabel
file_content = filhåndterer.lese()
skriv ut ("\ n Innholdet i filen nedenfor \ n")
skriv ut (filinnhold)
skriv ut ("Størrelsen på filen er% d byte"% størrelse)
ellers:
# Hev unntak hvis filen er tom
heve Unntak ('Filen har ikke noe innhold.')
# Skriv ut feilmeldingen hvis filen ikke eksisterer
unntatt IOError som feil:
skriv ut (feil)
# Skriv ut feilmeldingen hvis filen er tom
unntatt unntak som e:
skriv ut ('Feil:% s'% e)
# Skriv ut meldingen hvis det ikke er noen feil
ellers:
skriv ut ('Ingen feil oppstår')

Produksjon:

Manuset utføres tre ganger. Første gang blir det gitt et filnavn som ikke eksisterer, og utdataene viser en IOError-melding. Andre gang gis et filnavn som eksisterer, men som ikke har noe innhold, og utdataene viser en tilpasset melding. For tredje gang gis et filnavn som eksisterer og inneholder tekst. Utgangen viser innholdet i filen.

Eksempel 3: Bruk av prøve-unntatt-til slutt-blokk for å håndtere delingsfeil

Eksemplet viser bruken av en prøve-unntatt-til slutt-blokk for å håndtere divisjonsfeil. To numeriske verdier blir tatt som inngang og delt den første inngangen med den andre inngangen i prøveblokken. To typer feil kan oppstå her. En er ValueError når brukeren vil skrive inn en verdi uten tall og en annen er ZeroDivisionError når brukeren tar 0 som en annen inngang.

#!/ usr / bin / env python3
# Definer prøveblokken
prøve:
# Skriv inn to flytnumre
n1 = float (input ('Enter a number \ n'))
n2 = float (input ('Skriv inn et tall \ n'))
# Del disse tallene
divisjon = n1 / n2
# Håndter feil
unntatt (ZeroDivisionError, ValueError):
print ("Delt med null feil eller Verdien er ikke et tall")
# Skriv ut melding hvis ingen feil oppstår
ellers:
print ("Resultatet av delingen er% f"% divisjon)
# Skriv ut melding hvis det oppstår en feil eller ikke
endelig:
print ("The end")

Produksjon:

Her kjøres skriptet to ganger med både riktige innganger og med den andre inngangen som 0. Så, det andre gangen unntaket genereres og viser feilmeldingen.

Konklusjon:

Denne opplæringen viser den grunnleggende unntakshåndteringsprosessen i python3 for de nye python-brukerne. Leserne vil være i stand til å forstå hva som er unntakshåndtering og hvordan de kan brukes i python-skript etter å ha praktisert eksemplene ovenfor.

Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...
Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...
HD Remastered Games for Linux som aldri hadde en Linux-utgave tidligere
Mange spillutviklere og utgivere kommer med HD-remaster av gamle spill for å forlenge franchisetiden, vennligst fans som ber om kompatibilitet med mod...