Pytonorm

Undantagshantering i Python

Undantagshantering i Python
När vi kör någon kod som innehåller fel visas felet i utdata genom att stoppa körningen av programmet. Vissa fel kanske inte känns igen av användarna och skapar en oönskad situation för dem. Men om felet kan visas i ett förståeligt format för användarna är det lätt för dem att veta orsaken till felet. I någon objektorienterad programmering, försök fånga eller försök-fånga-äntligen block används för att hantera fel och visa dem i ett läsbart format som kallas undantagshantering. Hur undantagshantering kan göras i Python-skript visas i denna handledning.

Syntax:

Prova:
blockera…
utom undantag:
hanterare…
annan:
blockera…
till sist:
blockera…

Här, om något fel inträffar när uttalandena utförs av Prova blockera kommer ett undantag att genereras och kasta felet till motsvarande bortsett från hanterare. Flera fel kan genereras i en enda Prova blockera och sedan måste du skriva flera bortsett från hanterare.  Uttalandena från annan block kommer att köras om inget fel inträffar i Prova blockera. Uttalandena från till sist block kommer att köras om något fel inträffar eller inte inträffar. För undantagshantering, användning annan och till sist block är inte nödvändiga. Olika typer av undantagshantering i python förklaras i nästa del av handledningen.

Exempel 1: Användning av ett enda försök-undantagsblock för att validera numeriska data:

Detta exempel visar den mycket enkla användningen av undantagshantering i Python. I Prova block kommer två ingångar att tas från användaren, en är ett strängvärde och en annan är ett numeriskt värde.  Om användaren skriver något strängvärde i stället för numeriskt värde för den andra inmatningen, kommer ValueError undantag kommer att genereras av python3 och ett anpassat felmeddelande visas från bortsett från blockera.

#!/ usr / bin / env python3
# Definiera försöksblocket
Prova:
# Ta alla data som en sträng
name = input ("Ange ditt namn: \ n")
# Ta några numeriska data
age = int (input ("Ange din ålder: \ n"))
# Skriv ut de formaterade uppgifterna med namn och ålder
skriv ut ("Hej% s, du är% s år gammal." %(namn ålder))
# hantera inmatningsfel
utom (ValueError):
# Skriv ut anpassat felmeddelande
skriv ut ("Fel inmatning! Du måste skriva ett nummer som din ålder.")

Produktion:

Skriptet körs två gånger i följande utgång med fel inmatning och korrekt inmatning. Första gången när användartypen 'Trettioett' som åldersvärde för den andra ingången som tar numeriskt värde sedan a ValueError genereras och felmeddelandet visas från undantagsblocket. Andra gången genereras inget fel för korrekta inmatningsvärden.

Exempel 2: Användning av flera utom block för att hantera flera fel:

Hur du kan använda flera förutom block för att hantera flera fel visas i detta exempel.  Två typer av fel hanteras i detta skript. Ett filnamn tas som inmatning från användaren för läsning. Om filen inte finns genereras den en IOError undantag och om filen existerar men är tom så kommer den att skapa ett anpassat undantag. För detta används två utom block i detta skript. När inget av felet inträffar visas filens innehåll.

#!/ usr / bin / env python3
# Import os-modul
importera os
# Definiera försöksblocket
Prova:
# Ta filnamnet som inmatning
filnamn = input ('Ange ett filnamn \ n')
# Öppna filen för läsning
file_handler = öppen (filnamn)
# Ställ sökpontern från 0 till slutet av filen
filhanterare.sök (0, os.SEEK_END)
# Läs storleken på filen i byte
storlek = filhanterare.säga()
# Skriv ut filinnehållet och antalet tecken i filen
om (storlek> 0):
# Ställ pontern till början av filen
filhanterare.söka (0)
# Läs och lagra filens innehåll i en variabel
file_content = filhanterare.läsa()
skriv ut ("\ nInnehållet i filen nedan \ n")
skriva ut (filinnehåll)
skriv ut ("Storleken på filen är% d byte"% storlek)
annan:
# Höj undantaget om filen är tom
höja undantaget ('Filen har inget innehåll.')
# Skriv ut felmeddelandet om filen inte finns
utom IOError som fel:
skriva ut (fel)
# Skriv ut felmeddelandet om filen är tom
utom undantag som e:
skriv ut ('Fel:% s'% e)
# Skriv ut meddelandet om det inte finns något fel
annan:
skriv ut ('Inget fel inträffar')

Produktion:

Manuset körs tre gånger. Första gången ges ett filnamn som inte finns och utdata visar ett IOError-meddelande. Andra gången ges ett filnamn som finns men inte har något innehåll och utdata visar ett anpassat meddelande. För tredje gången ges ett filnamn som finns och innehåller text. Utgången visar filens innehåll.

Exempel 3: Användning av försök-utom-slutligen block för att hantera delningsfel

Exemplet visar användningen av ett försök-utom-slutligen block för att hantera delningsfel. Två numeriska värden tas som inmatning och delar den första ingången med andra inmatningen i försöksblocket. Två typer av fel kan uppstå här. En är ValueError när användaren skriver ett värde utan nummer och ett annat är ZeroDivisionError när användaren tar 0 som en andra ingång.

#!/ usr / bin / env python3
# Definiera försöksblocket
Prova:
# Ange två flytnummer
n1 = float (input ('Enter a number \ n'))
n2 = float (input ('Enter a number \ n'))
# Dela upp dessa siffror
division = n1 / n2
# Hantera fel
utom (ZeroDivisionError, ValueError):
print ("Delat med nollfel eller Värdet är inte ett tal")
# Skriv ut meddelande om inget fel inträffar
annan:
print ("Resultatet av divisionen är% f"% division)
# Skriv ut meddelande om ett fel inträffar eller inte
till sist:
tryck ("Slutet")

Produktion:

Här körs skriptet två gånger med både korrekta ingångar och med den andra ingången som 0. Så, andra gången undantag genereras och visar felmeddelandet.

Slutsats:

Denna handledning visar den grundläggande undantagshanteringsprocessen i python3 för de nya pythonanvändarna. Läsarna kommer att kunna förstå vad som är undantagshantering och hur man använder dem i python-skript efter att ha tränat ovanstående exempel.

Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...
Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...