Python unntak

Python unntak

Et unntak er en hendelse som oppstår under utførelsen av et program for å avslutte eller endre den normale strømmen av et program. En feil reiser for eksempel et unntak. Som andre programmeringsspråk inneholder Python mange innebygde unntak. Disse unntakene reises hvis det oppstår en feil når programmet blir utført. Feiltypen bestemmer hvilket unntak som skal heves. Når et unntak inntreffer, sjekker Python -tolken om unntaket håndteres; 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 blir reist når det oppstår en feil under utførelsen av et program. Hvert unntak er avledet fra en "unntak" baseklasse. Følgende inkluderer noen innebygde Python-unntak, sammen med en kort beskrivelse av hver unntakstype:

Unntak Beskrivelse
Unntak Hvert unntak er avledet fra denne klassen.
Importerror Dette unntaket blir reist når en spesifikk modul importeres, og den blir ikke funnet.
Eoferror Dette er unntaket av filen. Dette unntaket oppstår når slutten av filen er nådd.
ZerodisionError Dette unntaket heves når et tall er delt med null.
KeyError Dette unntaket blir reist hvis en viss nøkkel som ikke er definert i en ordbok er spesifisert eller brukt.
Indekserror Dette unntaket blir reist når tilgang til en indeks for sekvens som ikke er i området, er forsøkt.
FloatingPointerror Dette unntaket blir reist 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.

Unntaksbruk i Python

Unntak i Python håndteres ved hjelp av Try -setningen. Kodestykket som kan kaste eller heve et unntak implementeres i en prøveblokk. Ved siden av prøveblokken implementeres en unntatt blokk for å håndtere unntaket. I unntatt blokken fanger vi unntaket og bestemmer hvilken operasjon vi skal utføre når vi møter det spesielle unntaket. Syntaksen ved å skrive forsøket 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 Try and Wards Blocks.

Her skriver vi ut en "navn" -variabel som ikke er definert. Dette reiser et unntak i unntatt blokken.

#Implementering av prøveblokken
prøve:
trykk (navn)
#Implementering av unntatt blokken
unntatt:
trykk ("Et unntak skjedde")

Produksjon

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

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

#definering av variabelen Navn
Navn = "Mark"
#Implementering av prøveblokken
prøve:
trykk (navn)
#Implementering av unntatt blokken
unntatt:
trykk ("Et unntak skjedde")

Produksjon

I eksemplet ovenfor blir prøveblokken utført og unntatt blokken hoppes over fordi programmet ikke reiser noen unntak. Vi kan definere så mange unntatt blokker i programmet vårt som vi vil. Hver unntatt blokkering håndterer en bestemt type unntak.

#Implementering av prøveblokken
prøve:
trykk (navn)
#Implementering av unntatt blokken for å fange navnefeilen
unntatt NameError:
Print ("Variabelen er ikke definert")
#Implementering av unntatt blokken
unntatt:
trykk ("noe gikk galt annet enn navnfeil")

Produksjon

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

#Implementering av prøveblokken
prøve:
trykk (navn)
#implementering av unntatt blokken for å fange feilen
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av unntatt blokken
unntatt:
trykk ("noe gikk galt annet enn navnfeil")

Produksjon

Exp.__Class__ Returnerer navnet på unntaksklassen.

Tilsvarende, la oss se på et eksempel på "ZerodivisionError" -klassen.

#Implementering av prøveblokken
prøve:
x = 1/0
trykk (x)
#implementering av unntatt blokken for å fange feilen
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av unntatt blokken
unntatt:
trykk ("noe gikk galt annet enn navnfeil")

Produksjon

Den andre blokken

Annenblokken brukes med prøve- og unntaksblokker. Eenta -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 blitt utført. Av denne grunn kan vi implementere den andre blokken med forsøket og unntatt blokker.

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

#Implementering av prøveblokken
prøve:
x = 1/2
trykk (x)
#implementering av unntatt blokken for å fange feilen
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av andre blokkering
ellers:
trykk ("Alt gikk bra")

Produksjon

Annets blokkering utføres etter vellykket utførelse av forsøksblokken.

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

#Implementering av prøveblokken
prøve:
Navn = "Mark"
#implementering av unntatt blokken for å fange feilen
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av andre blokkering
ellers:
trykk ("Navnet er:", navn)

Produksjon

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

Den endelig blokkeringen

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

#Implementering av prøveblokken
prøve:
print (my_dict)
#implementering av unntatt blokken for å fange feilen
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av den endelig blokken
endelig:
trykk ("Dette er den endelig blokken")
trykk ("Den endelig blokken utføres")

Produksjon

I utgangen kan det sees at prøveblokken reiser et unntak. Imidlertid utføres den endelig blokken på slutten.

La oss nå åpne en tekstfil i prøveblokken, som reiser et unntak mens filen vedtok i den endelig blokken.

#Implementering av prøveblokken
prøve:
fileobj = åpen ("mystudent.XML "," R ")
Fileobj.Søk (-2)
Trykk (Fileobj.ReadLines ())
#Implementering av unntatt blokken
Bortsett fra unntak som exp:
Trykk (EXP.__klasse__)
#Implementering av den endelig blokken
endelig:
Fileobj.Lukk()
Print ("Filen er vellykket lukket")

Produksjon

Som du kan se, uavhengig av verdifeil, har filen blitt lukket med suksess inne i den endelig blokken.

Hev et unntak

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

Vi vil nå heve noen unntak ved å bruke Raise nøkkelordet. I det følgende eksempel implementeres IF-tilstanden for å se etter ikke-negative tall. Hvis det ikke er noen som ikke er negative tall, blir unntaket “ikke-negative tall ikke tillatt” hevet.

#Declaring to tallvariabler
num1 = 20
num2 = -10
if ((num1<0) | (num2<0)):
Hev unntak ("Ikke-negative tall er ikke tillatt")
ellers:
utskrift (num1+num2)

Produksjon

Konklusjon

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