Python

Undtagelseshåndtering i Python

Undtagelseshåndtering i Python
Når vi kører en kode, der indeholder fejl, vises fejlen i output ved at stoppe udførelsen af ​​programmet. Nogle fejl genkendes muligvis ikke af brugerne og skaber en uønsket situation for dem. Men hvis fejlen kan vises i et forståeligt format for brugerne, er det let for dem at kende årsagen til fejlen. I enhver objektorienteret programmering, prøve-fangst eller prøv-fang-endelig blok bruges til at håndtere fejl og vise dem i et læsbart format, der kaldes undtagelseshåndtering. Hvordan undtagelseshåndtering kan udføres i Python-script vises i denne vejledning.

Syntaks:

prøve:
blok…
undtagen undtagelse:
handler ..
andet:
blok…
langt om længe:
blok…

Her, hvis der opstår en fejl under udførelsen af ​​udsagnene fra prøve blokere, så genereres en undtagelse og smide fejlen til den tilsvarende undtagen handler. Flere fejl kan genereres i en enkelt prøve blokere, og så skal du skrive flere undtagen håndterere.  Udtalelserne fra andet Blok udføres, hvis der ikke opstår nogen fejl i prøve blok. Udtalelserne fra langt om længe blok udføres, hvis der opstår en fejl eller ikke. Til undtagelse håndtering, brug andet og langt om længe blokke er ikke vigtige. Forskellige typer håndtering af undtagelser i python forklares i den næste del af vejledningen.

Eksempel 1: Brug af en enkelt prøve-undtagen blok til validering af numeriske data:

Dette eksempel viser den meget enkle brug af undtagelseshåndtering i Python. I prøve blok, to input vil blive taget fra brugeren, en er en strengværdi og en anden er en numerisk værdi.  Hvis brugeren skriver en strengværdi i stedet for den numeriske værdi for den anden indgang, ValueError undtagelse genereres af python3 og en brugerdefineret fejlmeddelelse vises fra undtagen blok.

#!/ usr / bin / env python3
# Definer prøveblokken
prøve:
# Tag alle data som en streng
name = input ("Indtast dit navn: \ n")
# Tag eventuelle numeriske data
age = int (input ("Indtast din alder: \ n"))
# Udskriv de formaterede data med navn og alder
print ("Hej% s, du er% s år gammel."% (navn, alder))
# håndter inputfejl
undtagen (ValueError):
# Udskriv brugerdefineret fejlmeddelelse
print ("Forkert input! Du skal indtaste et nummer som din alder.")

Produktion:

Scriptet udføres to gange i den følgende output med den forkerte input og den korrekte input. Første gang, når brugertypen 'Enogtredive' som aldersværdi for det andet input, der tager numerisk værdi, så a ValueError genereres, og fejlmeddelelsen vises fra undtagelsesblokken. Anden gang genereres der ingen fejl for korrekte inputværdier.

Eksempel 2: Brug af flere undtagen blok til at håndtere flere fejl:

Hvordan du kan bruge flere undtagen blok til at håndtere flere fejl vises i dette eksempel.  To typer fejl håndteres i dette script. Et filnavn tages som input fra brugeren til læsning. Hvis filen ikke findes, genereres den en IOError undtagelse, og hvis filen findes, men er tom, hæver den en brugerdefineret undtagelse. Til dette bruges to undtagen blokke i dette script. Når ingen af ​​fejlen opstår, vises indholdet af filen.

#!/ usr / bin / env python3
# Import os-modul
importer os
# Definer prøveblokken
prøve:
# Tag filnavnet som input
filnavn = input ('Indtast et filnavn \ n')
# Åbn filen til læsning
file_handler = åben (filnavn)
# Indstil søgeponteren fra 0 til slutningen af ​​filen
filhåndterer.søg (0, os.SEEK_END)
# Læs størrelsen på filen i byte
størrelse = filhåndterer.fortælle()
# Udskriv filindholdet og antallet af tegn i filen
hvis (størrelse> 0):
# Indstil ponteren til starten af ​​filen
filhåndterer.søg (0)
# Læs og gem indholdet af filen i en variabel
file_content = filhåndterer.Læs()
print ("\ nIndholdet af filen angivet nedenfor \ n")
udskriv (fil_indhold)
print ("Størrelsen på filen er% d bytes"% størrelse)
andet:
# Hæv undtagelsen, hvis filen er tom
hæv undtagelsen ('Filen har intet indhold.')
# Udskriv fejlmeddelelsen, hvis filen ikke findes
undtagen IOError som fejl:
udskriv (fejl)
# Udskriv fejlmeddelelsen, hvis filen er tom
undtagen undtagelse som e:
print ('Fejl:% s'% e)
# Udskriv meddelelsen, hvis der ikke er nogen fejl
andet:
print ('Ingen fejl opstår')

Produktion:

Scriptet udføres tre gange. Første gang gives der et filnavn, der ikke findes, og output viser en IOError-besked. Anden gang gives der et filnavn, der findes, men ikke har noget indhold, og output viser en brugerdefineret besked. For tredje gang gives der et filnavn, der findes og indeholder tekst. Outputtet viser indholdet af filen.

Eksempel 3: Brug af prøve-undtagen-endelig blok til at håndtere divisionsfejl

Eksemplet viser brugen af ​​en prøve-undtagen-endelig blok til at håndtere divisionsfejl. To numeriske værdier tages som input og dividerer den første input med anden input i prøveblokken. To typer fejl kan forekomme her. Den ene er ValueError når brugeren vil skrive en værdi uden tal, og en anden er ZeroDivisionError når brugeren tager 0 som et andet input.

#!/ usr / bin / env python3
# Definer prøveblokken
prøve:
# Indtast to floatnumre
n1 = float (input ('Indtast et tal \ n'))
n2 = float (input ('Indtast et tal \ n'))
# Del disse tal
division = n1 / n2
# Håndter fejl
undtagen (ZeroDivisionError, ValueError):
print ("Delt med nul fejl eller Værdien er ikke et tal")
# Udskriv besked, hvis der ikke opstår nogen fejl
andet:
print ("Resultatet af divisionen er% f"% division)
# Udskriv besked, hvis der opstår en fejl eller ikke
langt om længe:
print ("Enden")

Produktion:

Her køres scriptet to gange med både korrekte input og med den anden input som 0. Så den anden gang undtagelse genereres og viser fejlmeddelelsen.

Konklusion:

Denne vejledning viser den grundlæggende håndteringsproces for undtagelser i python3 for de nye python-brugere. Læserne vil være i stand til at forstå, hvad der er undtagelseshåndtering, og hvordan man anvender det i python-script efter at have praktiseret ovenstående eksempler.

Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...