Python-undtagelseshåndtering: Prøv, fang, endelig

Indholdsfortegnelse:

Anonim

Hvad er en undtagelse i Python?

En undtagelse er en fejl, der sker på tidspunktet for udførelsen af ​​et program. Mens du kører et program, genererer Python imidlertid en undtagelse, der skal håndteres for at undgå, at dit program går ned. På Python-sprog udløser undtagelser automatisk ved fejl, eller de kan udløses og opfanges af din kode.

Undtagelsen indikerer, at selvom begivenheden kan forekomme, sker denne type begivenhed 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 smides ud af hovedfunktionen, afsluttes programmet brat.

I denne Python ekstraordinære håndteringsvejledning lærer du:

  • Hvad er en undtagelse i Python?
  • Almindelige eksempler på undtagelse
  • Hvorfor skal du bruge undtagelser?
  • Undtagelsesregler
  • Ekstraordinær håndteringsmekanisme
    • Try-erklæringen
    • Fangsterklæringen
    • Raise-erklæringen
  • Vigtige Python-fejl
  • Andre vigtige Python-undtagelser
  • Fejl vs. undtagelser

Almindelige eksempler på undtagelse:

  • Opdeling efter nul
  • Adgang til en fil, der ikke findes.
  • Tilføjelse af to inkompatible typer
  • Forsøger at få adgang til et ikke-eksisterende indeks for en sekvens
  • Fjernelse af tabellen fra den afbrudte databaseserver.
  • ATM-udbetaling på mere end det tilgængelige 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 et Python-objekt, der 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 finder sted ét sted og på én måde.
  • En undtagelse er en praktisk metode til håndtering af fejlmeddelelser.
  • I Python kan du hæve en undtagelse i programmet ved hjælp af metoden raise exception.
  • At hæve en undtagelse hjælper dig med at bryde den aktuelle kodeudførelse og returnerer undtagelsen tilbage til forventning, indtil den håndteres.
  • Behandler undtagelser for komponenter, der ikke kan håndtere dem direkte.

Undtagelsesregler

Her er nogle vigtige regler for håndtering af Python-undtagelser:

  • Undtagelser skal være klasseobjekter
  • For klasseundtagelser kan du bruge try statement med en undtagelsesklausul, der nævner en bestemt klasse.
  • Selvom en sætning eller et udtryk er syntaktisk korrekt, kan det vise en fejl, når der forsøges at udføre det.
  • Fejl fundet under udførelse kaldes undtagelser, og de er ikke ubetinget dødelige.

Ekstraordinær håndteringsmekanisme

Undtagelsesbehandling håndteres af følgende 5 nøgleord:

  1. prøve
  2. fangst
  3. langt om længe
  4. kaste

Try-erklæringen

En prøveerklæring inkluderer forsøg med nøgleord, efterfulgt af et kolon (:) og en kode kode, hvor undtagelser kan forekomme. Det har en eller flere klausuler.

Hvis der ikke er sket nogen undtagelser under udførelsen af ​​prøveerklæringen, ignorerer tolken undtagelsesbehandlerne for den specifikke prøveerklæring.

Hvis der opstår en undtagelse i en prøvepakke, udløber prøvepakken, og programkontrol overføres til den matchende undtagen handler efter prøvepakken.

Syntax:try:statement(s)

Fangsterklæringen

Fangstblokke tager et argument ad gangen, hvilket er den type undtagelse, som det sandsynligvis vil fange. Disse argumenter kan variere fra en bestemt undtagelsestype, som kan varieres til en kategori af undtagelser.

Regler for fangstblokering:

  • Du kan definere en fangstblok ved hjælp af nøgleordet fangst
  • Fangstundtagelsesparameter er altid indeholdt i parentes
  • Det repræsenterer altid den type undtagelse, der fanger blokhåndtag.
  • En undtagelseshåndteringskode skrives mellem to {} krøllede seler.
  • Du kan placere flere fangstblokke inden for en enkelt prøveblok.
  • Du kan kun bruge en fangstblok efter prøveblokken.
  • Al fangstblok skal bestilles fra underklasse til undtagelse af superklasse.

Eksempel:

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

Endelig blokere

Endelig udføres blok altid uanset om en undtagelse kastes 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, der skal udføres under alle forhold.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Endelig udføres klausul før prøveerklæring.

Raise-erklæringen

Hævningssætningen specificerer et argument, der initialiserer undtagelsesobjektet. Her følger et komma undtagelsesnavnet og argumentet eller tuplen for det argument, der følger kommaet.

Syntaks:

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

I denne syntaks er argumentet valgfrit, og på tidspunktet for udførelsen er undtagelsesargumentværdien altid ingen.

Eksempel:

En Python-undtagelse kan være en hvilken som helst værdi som en streng, klasse, nummer eller et objekt. De fleste af disse undtagelser, der hæves af Python-kernen, er klasser med et argument, der er en forekomst af klassen.

Vigtige Python-fejl

Fejltype Beskrivelse
AritmetikFejl ArithmeticError fungerer som en basisklasse for alle aritmetiske undtagelser. Det hæves for fejl i aritmetiske operationer.
ImportError ImportError hæves, når du prøver at importere et modul, der ikke findes. Denne form for undtagelse opstår, hvis du har lavet en skrivefejl i modulnavnet eller det modul, der ikke findes i standardstien.
IndexError Et indeksfejl hæves, når du prøver at henvise en sekvens, der er uden for rækkevidde.
KeyError Når en bestemt nøgle ikke findes i en ordbog, hæves en KeyError-undtagelse.
NameError En NameError hæves, når der henvises til et navn i kode, der aldrig findes i det lokale eller globale navneområde.
ValueError Værdifejl hæves, når en funktion eller en indbygget operation modtager et argument, der kan være af korrekt type, men ikke har en 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 rejst, når division eller modul med nul finder sted for alle numeriske typer.
IOFejl- Denne form for fejl opstået, når en input / output-handling mislykkes.
syntaks fejl SyntaxErrors rejst, når der er en fejl i Python-syntax.
Indrykningsfejl Denne fejl opstået, når indrykket ikke er defineret korrekt

Andre vigtige Python-undtagelser

Undtagelse Beskrivelse
Aritmetisk undtagelse Aritmetisk fejl, såsom divider med nul.
ArraylndexOutOfBoundsException Matrixindeks er uden for grænserne.
ArrayStoreException Tildeling hjælper dig med array-elementet af en inkompatibel type.
ClassCastException Ugyldig rollebesætning
MlegalMonitorStateException Ulovlig skærmbetjening, som at vente på en ulåst tråd.
MlegalStateException Miljø eller anvendelse er i forkert tilstand.
ClassNotFoundException Klasse ikke fundet.
CloneNotSupportedException Forsøg at klone et objekt, der ikke implementerer Cloneable-grænsefladen.
Ulovlig adgangsundtagelse Adgang til en klasse nægtes.
InstantiationException Opstår, når du forsøger at oprette et objekt fra en grænseflade eller abstrakt klasse.
CloneNotSupportedException Forsøg at klone et objekt, der ikke implementerer grænsefladen.

Fejl vs. undtagelser

Fejl Undtagelser
Alle fejl i Python er den ukontrollerede type. Undtagelser inkluderer både markeret og ikke-markeret type.
Der opstår fejl på kørselstidspunktet, som er ukendt for compileren. Undtagelser kan gendannes ved at håndtere dem ved hjælp af try-catch blokke.
Fejl skyldes for det meste det miljø, hvor en applikation kører. Selve applikationen medfører undtagelser.
Eksempler: OutofMemoryError Eksempler: Kontrollerede undtagelser, SQL-undtagelser, NullPointerException osv.

Resumé

  • En undtagelse er en fejl, der opstod under udførelsen af ​​et program.
  • Undtagelsen indikerer, at selvom begivenheden kan forekomme, sker denne type begivenhed sjældent.
  • Almindelige eksempler på undtagelse er 1) Opdeling efter nul, 2) Adgang til en fil, der ikke findes, 3) Tilføjelse af to inkompatible typer.
  • En undtagelse er et Python-objekt, der repræsenterer en fejl.
  • En prøveerklæring inkluderer forsøg med nøgleord, efterfulgt af et kolon (:) og en kode kode, hvor undtagelser kan forekomme. Det har en eller flere klausuler.
  • Fangstblokke tager et argument ad gangen, hvilket er den type undtagelse, som det sandsynligvis vil fange.
  • Hævningssætningen specificerer et argument, der initialiserer undtagelsesobjektet.
  • Endelig udføres blok altid uanset om en undtagelse kastes eller ej.