Python Undtagelseshåndtering: prøv, fang, til sidst og hæv [Eksempel]

Hvad er en undtagelseshåndtering i Python?

En undtagelse er en fejl, der opstår på tidspunktet for udførelse af et program. Men mens du kører et program, Python genererer en undtagelse, der bør håndteres for at undgå, at dit program går ned. I Python sprog, udløses undtagelser automatisk ved fejl, eller de kan udløses og opsnappes af din kode.

Undtagelsen indikerer, at selvom hændelsen kan forekomme, sker denne type hændelse sjældent. Når metoden ikke er i stand til at håndtere undtagelsen, kastes den til dens opkaldsfunktion. Til sidst, når en undtagelse er smidt ud af hovedfunktionen, afsluttes programmet brat.

Almindelige eksempler på undtagelser

  • Division med nul
  • Adgang til en fil, der ikke eksisterer.
  • Tilføjelse af to inkompatible typer
  • Forsøger at få adgang til et ikke-eksisterende indeks for en sekvens
  • Fjerner tabellen fra den afbrudte databaseserver.
  • Hævning i hæveautomat på mere end det disponible beløb

Hvorfor skal du bruge undtagelser?

Her er grundene til at bruge undtagelser i Python:

  • Undtagelseshåndtering giver dig mulighed for at adskille fejlhåndteringskode fra normal kode.
  • En undtagelse er en Python objekt som repræsenterer en fejl.
  • Som med kodekommentarer hjælper undtagelser dig med at minde dig selv om, hvad programmet forventer.
  • Det tydeliggør koden og forbedrer læsbarheden.
  • Giver dig mulighed for at stimulere konsekvenser, da fejlhåndteringen foregår ét sted og på én måde.
  • En undtagelse er en praktisk metode til håndtering af fejlmeddelelser.
  • In Python, kan du rejse en undtagelse i programmet ved at bruge metoden med raise undtagelse.
  • At rejse en undtagelse hjælper dig med at bryde den aktuelle kodeudførelse og returnerer undtagelsen tilbage til forventningen, indtil den er håndteret.
  • Behandling af undtagelser for komponenter, der ikke kan håndtere dem direkte.

Undtagelsesregler

Her er nogle væsentlige regler for Python undtagelseshåndtering:

  • Undtagelser skal være klasseobjekter
  • For klasseundtagelser kan du bruge try-sætning med en except-sætning, som nævner en bestemt klasse.
  • Selvom en sætning eller et udtryk er syntaktisk korrekt, kan det vise en fejl, når et forsøg på at udføre det.
  • Fejl fundet under udførelsen kaldes undtagelser, og de er ikke ubetinget fatale.

Python Undtagelseshåndteringsmekanisme

Undtagelseshåndtering administreres af følgende 5 nøgleord:

  1. prøv
  2. fangst
  3. endelig
  4. kaste

Python Prøv Statement

En try-sætning inkluderer nøgleordet try, efterfulgt af et kolon (:) og en kodepakke, hvor undtagelser kan forekomme. Den har en eller flere klausuler.

Under udførelsen af ​​try-sætningen ignorerer tolken undtagelsesbehandlerne for den specifikke try-sætning, hvis ingen undtagelser fandt sted.

Hvis der opstår en undtagelse i en try-pakke, udløber try-pakken, og programstyringen overføres til den matchende undtagen-handler efter prøvepakken.

Syntax:
try:
statement(s)

Fangsterklæringen

Catch-blokke tager et argument ad gangen, hvilket er den type undtagelse, som det sandsynligvis vil fange. Disse argumenter kan spænde fra en bestemt type undtagelse, som kan varieres, til en samlet kategori af undtagelser.

Regler for catch block:

  • Du kan definere en catch-blok ved at bruge søgeordet catch
  • Catch Exception parameter er altid omgivet af parentes
  • Det repræsenterer altid den type undtagelse, som catch block håndterer.
  • En undtagelseshåndteringskode er skrevet mellem to {} krøllede klammeparenteser.
  • Du kan placere flere catch-blok i en enkelt forsøgsblok.
  • Du kan kun bruge en catch-blok efter prøveblokken.
  • Al catch-blokken skal bestilles fra underklasse til superklasse-undtagelse.

Eksempel:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

Endelig erklæring i Python

Endelig udføres blokering altid, uanset om en undtagelse bliver kastet eller ej. Det sidste nøgleord giver dig mulighed for at oprette en kodeblok, der følger en try-catch-blok.

Endelig er klausul valgfri. Det er beregnet til at definere oprydningshandlinger, som skal være dem, der udføres under alle forhold.

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

Til sidst udføres klausul før try-sætning.

Hæv erklæring i Python

Raise-sætningen specificerer et argument, som initialiserer undtagelsesobjektet. Her følger et komma efter undtagelsesnavnet og argumentet eller tupelen af ​​det argument, der følger efter kommaet.

Syntaks:

raise [Exception [, args [, traceback]]]

I denne syntaks er argumentet valgfrit, og på tidspunktet for udførelse er undtagelsesargumentværdien altid ingen.
Eksempel:
A Python undtagelse kan være en hvilken som helst værdi som en streng, klasse, tal eller et objekt. De fleste af disse undtagelser, som er rejst af Python kerne er klasser med et argument, som er en forekomst af klassen.

Vigtig Python fejl

Fejltype Description
Aritmetisk fejl ArithmeticError fungerer som en basisklasse for alle aritmetiske undtagelser. Den hæves for fejl i regneoperationer.
Importfejl ImportError opstår, når du forsøger at importere et modul, som ikke findes. Denne form for undtagelse opstår, hvis du har skrevet fejl i modulnavnet eller det modul, som ikke er til stede i standardstien.
Indeksfejl En IndexErroris rejst, når du forsøger at henvise til en sekvens, som er uden for rækkevidde.
KeyError Når en bestemt nøgle ikke findes i en ordbog, opstår der en KeyError-undtagelse.
Navnefejl En NameError opstår, når der henvises til et navn i kode, som aldrig eksisterer i det lokale eller globale navneområde.
ValueError Værdifejl opstår, når en funktion eller indbygget operation modtager et argument, som kan være af korrekt type, men som ikke har passende værdi.
EOFejl Denne form for fejl opstår, når en af ​​de indbyggede funktioner (input() eller raw_input()) når en EOF-tilstand uden at læse nogen data.
ZeroDivisonError Denne type fejl opstår, når division eller modul med nul finder sted for alle numeriske typer.
IOEfejl- Denne form for fejl opstår, når en input/output handling mislykkes.
syntaks fejl SyntaxErrors rejst, når der er en fejl i Python syntaks.
Indrykningsfejl Denne fejl opstod, når indrykning ikke er korrekt defineret

Andet vigtigt Python Undtagelser

undtagelse Description
Aritmetisk undtagelse Regnefejl, såsom divider med nul.
ArraylndexOutOfBoundsException Array-indekset er uden for grænserne.
ArrayStoreException Tildeling hjælper dig til array-elementet af en inkompatibel type.
ClassCastException Ugyldig cast
MlegalMonitorStateException Ulovlig skærmoperation, som at vente på en ulåst tråd.
MlegalStateException Miljøet eller programmet er i forkert tilstand.
ClassNotFoundException Klasse ikke fundet.
CloneNotSupportedException Forsøg på at klone et objekt, som ikke implementerer den kloningsbare grænseflade.
Undtagelse for ulovlig adgang Adgang til en klasse nægtes.
InstantiationException Opstår, når du forsøger at oprette et objekt af en grænseflade eller abstrakt klasse.
CloneNotSupportedException Forsøg på at klone et objekt, som ikke implementerer grænsefladen.

Fejl vs. undtagelser

Fejl Undtagelser
Alle fejl i Python er den umarkerede type. Undtagelser omfatter både markeret og umarkeret type.
Der opstår fejl under kørsel, som er ukendte for compileren. Undtagelser kan gendannes ved at håndtere dem ved hjælp af try-catch-blokke.
Fejl er for det meste forårsaget af det miljø, hvor et program kører. Selve applikationen forårsager undtagelser.
eksempler:
OutofMemoryError
eksempler:
Markerede undtagelser, SQL-undtagelse, NullPointerException osv.

Resumé

  • En undtagelse er en fejl, der er sket under afviklingen af ​​et program.
  • Undtagelsen indikerer, at selvom hændelsen kan forekomme, sker denne type hændelse sjældent.
  • Almindelige eksempler på undtagelser er 1) division med nul, 2) adgang til en fil, der ikke findes, 3) tilføjelse af to inkompatible typer.
  • En undtagelse er en Python objekt, der repræsenterer en fejl.
  • En try-sætning inkluderer nøgleordet try, efterfulgt af et kolon (:) og en kodepakke, hvor undtagelser kan forekomme. Den har en eller flere klausuler.
  • Catch-blokke tager et argument ad gangen, hvilket er den type undtagelse, som det sandsynligvis vil fange.
  • Raise-sætningen specificerer et argument, som initialiserer undtagelsesobjektet.
  • Endelig udføres blokering altid, uanset om en undtagelse bliver kastet eller ej.