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:
- prøv
- fangst
- endelig
- 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.