Python

Python Unntak

Python Unntak

Et unntak er en hendelse som oppstår under gjennomføringen av et program for å avslutte eller endre den normale flyten til et program. En feil gir for eksempel et unntak. Som andre programmeringsspråk inneholder Python mange innebygde unntak. Disse unntakene heves hvis det oppstår en feil når programmet kjøres. Feiltypen avgjør hvilket unntak som skal reises. Når et unntak oppstår, sjekker Python-tolk om unntaket blir håndtert; hvis ikke, avslutter det programmet. Denne artikkelen forklarer unntak i Python gjennom forskjellige eksempler.

Innebygde Python-unntak

Som diskutert tidligere har Python mange innebygde unntak som heves når det oppstår en feil under kjøringen av et program. Hvert unntak kommer fra en "Unntakelse" -klasse. Følgende inkluderer noen innebygde Python-unntak, sammen med en kort beskrivelse av hver unntakstype:

Unntak Beskrivelse
Unntak Hvert unntak kommer fra denne klassen.
ImportError Dette unntaket heves når en bestemt modul importeres, og den blir ikke funnet.
EOFError Dette er slutten av fil-unntaket. Dette unntaket oppstår når slutten av filen er nådd.
ZeroDivisionError Dette unntaket heves når et tall er delt på null.
KeyError Dette unntaket heves hvis en bestemt nøkkel som ikke er definert i en ordbok er spesifisert eller brukt.
IndexError Dette unntaket heves når tilgang til en sekvensindeks som ikke er i området har blitt forsøkt.
FloatingPointError Dette unntaket heves når en flytende punktoperasjon mislykkes.

Dette er noen av de innebygde unntakene i Python. Vennligst besøk den offisielle dokumentasjonen for mer informasjon om bruk av innebygde unntak i Python, som ligger på https: // docs.python.org / 3 / bibliotek / unntak.html.

Unntak Bruk i Python

Unntak i Python håndteres ved hjelp av prøveerklæringen. Kodestykket som kan kaste eller heve et unntak er implementert i en prøveblokk. Ved siden av prøveblokken implementeres en unntatt blokk for å håndtere unntaket. I unntakblokken fanger vi unntaket og bestemmer hvilken operasjon vi skal utføre når vi møter det spesielle unntaket. Syntaksen for å skrive prøven og unntatt blokker er som følger:

prøve:
utføre operasjonen eller funksjonen
unntatt:
funksjonalitet for å håndtere unntaket

Nå vil vi implementere en enkel kode i Python-skriptet vårt ved hjelp av prøve og unntatt blokker.

Her vil vi skrive ut en 'navn' -variabel som ikke er definert. Dette gir et unntak i den unntatte blokken.

#implementing the try block
prøve:
skriv ut (navn)
#implementing the except block
unntatt:
utskrift ("Det oppstod et unntak")

Produksjon

Hvis det ikke oppstår noe unntak, blir bare prøveblokken utført. I den unntatte blokken skrives en uttalelse om at det har oppstått et unntak.

La oss se på et annet eksempel der vi definerer navnevariabelen:

#definerer navnvariabelen
name = "Mark"
#implementing the try block
prøve:
skriv ut (navn)
#implementing the except block
unntatt:
utskrift ("Det oppstod et unntak")

Produksjon

I eksemplet ovenfor blir prøveblokken utført, og den unntatte blokken hoppes over fordi programmet ikke gir noen unntak. Vi kan definere så mange bortsett fra blokker i programmet vårt som vi vil. Hvert unntatt blokk håndterer et bestemt unntak.

#implementing the try block
prøve:
skriv ut (navn)
#implementering av den unntatte blokken for å fange opp navnet feil
unntatt NameError:
print ("Variabelen er ikke definert")
#implementing the except block
unntatt:
utskrift ("Noe gikk galt annet enn navnefeil")

Produksjon

I Python er Unntak baseklassen for alle unntak. I stedet for å skrive navnet på et bestemt unntak i den unntatte blokken, kan vi ganske enkelt skrive "Unntak" og fange alle typer unntak på denne måten.

#implementing the try block
prøve:
skriv ut (navn)
#implementing the except block for å fange feilen
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the except block
unntatt:
utskrift ("Noe gikk galt annet enn navnefeil")

Produksjon

Exp.__class__ returnerer navnet på klassen for unntak.

På samme måte, la oss se på et eksempel på klassen “ZeroDivisionError”.

#implementing the try block
prøve:
x = 1/0
skriv ut (x)
#implementing the except block for å fange feilen
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the except block
unntatt:
utskrift ("Noe gikk galt annet enn navnefeil")

Produksjon

The Other Block

Den andre blokken brukes med prøve- og unntaksblokkene. Den andre blokken definerer et stykke kode som utføres hvis prøveblokken utføres vellykket og ingen feil oppstår. Noen ganger kan det hende du må skrive ut en melding eller utføre en funksjon når prøveblokken er utført. Av denne grunn kan vi implementere den andre blokken med prøve og unntatt blokker.

I dette eksemplet vil vi implementere den andre blokken i Python-skriptet vårt.

#implementing the try block
prøve:
x = 1/2
skriv ut (x)
#implementing the except block for å fange feilen
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the else block
ellers:
utskrift ("Alt gikk bra")

Produksjon

Den andre blokken utføres etter vellykket utførelse av prøveblokken.

La oss nå se på et annet eksempel ved å bruke den andre blokken.

#implementing the try block
prøve:
name = "Mark"
#implementing the except block for å fange feilen
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the else block
ellers:
print ("Navnet er:", navn)

Produksjon

I eksemplet ovenfor er navnevariabelen definert inne i prøveblokken og skrives ut i den andre blokken.

Endelig Block

De endelig blokken inneholder koden som må utføres uavhengig av om prøveblokken gir et unntak. Den endelige blokken er valgfri og blir erklært med prøveblokken. For eksempel, hvis vi har åpnet en tekstfil for å lese prøveblokken og det reiser en feil eller unntak, er det bedre å legge filen i den endelige blokken, selv om feilen oppstår. La oss implementere den endelige blokken i vårt Python-skript.

#implementing the try block
prøve:
skriv ut (min_dikt)
#implementing the except block for å fange feilen
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the finally block
endelig:
skriv ut ("Dette er den endelige blokken")
print ("Den endelige blokken er utført")

Produksjon

I utgangen kan det sees at prøveblokken gir et unntak. Den endelige blokken utføres imidlertid på slutten.

La oss nå åpne en tekstfil i prøveblokken, noe som gir et unntak mens filen er lukket i den endelige blokken.

#implementing the try block
prøve:
fileObj = open ("minstudent.xml "," r ")
filObj.søk (-2)
skriv ut (filObj.readlines ())
#implementing the except block
unntatt unntak som exp:
utskrift (eksp.__klasse__)
#implementing the finally block
endelig:
filObj.Lukk()
skriv ut ("Filen er vellykket lukket")

Produksjon

Som du kan se, uansett verdifeil, har filen blitt lukket med suksess i den endelige blokken.

Hev et unntak

Selv om unntak heves automatisk når det oppstår en feil, kan du i Python også heve unntak manuelt. De heve nøkkelord brukes til å heve eller kaste unntaket.

Vi vil nå heve noen unntak ved å bruke søkeordet raise. I det følgende eksemplet er if-tilstanden implementert for å se etter ikke-negative tall. Hvis det finnes ikke-negative tall, heves unntaket "Ikke-negative tall".

#declaring to number variables
num1 = 20
num2 = -10
hvis ((num1<0) | (num2<0)):
heve unntak ("Ikke-negative tall er ikke tillatt")
ellers:
skriv ut (num1 + num2)

Produksjon

Konklusjon

Et unntak oppstår som svar på en feil på kjøretiden. I Python kan vi håndtere unntak ved å bruke prøve og unntatt blokker. Denne artikkelen forklarte hvordan du bruker unntak i Python gjennom forskjellige eksempler.

OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...
SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...