Python Undtagelseshåndtering: forsøg, undtagen, endelig, hæv

⚡ Smart opsummering

Python Undtagelseshåndtering lader dit program reagere på runtime-fejl i stedet for at gå ned. Her lærer du, hvordan try, except, finally og raise fungerer, hvorfor undtagelser er vigtige, og de almindelige indbyggede fejltyper, du vil støde på.

  • ⚠️ Hvad er det: En undtagelse er en runtime-fejl, der Python hæver sig, når noget går galt.
  • 🛡️ prøv / undtagen: En try-blok kører risikabel kode; except fanger og håndterer undtagelsen.
  • 🧹 endelig: En finally-blok kører altid, uanset om der er opstået en undtagelse eller ej.
  • 🚀 hæve: Med raise-sætningen kan du udløse en undtagelse med vilje.
  • ???? Fejltyper: Almindelige undtagelser inkluderer ValueError, KeyError, IndexError og ZeroDivisionError.
  • 🤖 AI-hjælp: AI-værktøjer som Copilot genererer try-except-blokke og foreslår fejltyper.

Python undtagelse Håndtering

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 Beskrivelse
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, der ikke findes. Denne type undtagelse opstår, hvis du har lavet typing fejl i modulnavnet eller modulet, som ikke findes 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 Beskrivelse
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 ABStract-klassen.
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.

Ofte Stillede Spørgsmål

Undtagelseshåndtering er processen med at reagere på runtime-fejl, så dit program ikke går ned. Python bruger try- og except-blokke til at fange undtagelser og køre gendannelseskode i stedet.

Code som muligvis fejler, placeres i en try-blok. Hvis der opstår en undtagelse, Python hopper til den matchende except-blok, som håndterer fejlen og lader programmet fortsætte.

En finally-blok kører uanset om der er opstået en undtagelse eller ej, så den er ideel til oprydningsopgaver som at lukke filer eller frigive ressourcer, der altid skal ske.

raise-sætningen udløser en undtagelse med vilje. Du kan generere en indbygget undtagelse som ValueError eller en brugerdefineret undtagelse for at signalere, at der er opstået en fejltilstand.

Fejl, som f.eks. en SyntaxError, kan normalt ikke gendannes og stoppe programmet. Undtagelser er runtime-hændelser, som du kan fange og håndtere med try- og except-blokke.

AI-assistenter som GitHub Copilot fuldfører automatisk try-except-blokke, foreslår den rigtige undtagelsestype at fange og genererer endelig oprydningskode ud fra en kort beskrivelse af din logik.

Ja. AI-drevne værktøjer kan automatisere indpakningping risikabel kode i try-except-blokke, anbefale specifikke undtagelser frem for bare except, og tilføje logføring, så fejl er lettere at debugge.

Almindelige indbyggede undtagelser inkluderer ValueError, TypeError, KeyError, IndexError, ImportError, NameError og ZeroDivisionError. Hver især signalerer en specifik type runtime-problem i din kode.

Opsummer dette indlæg med: