Hva er et unntak i Python?
Et unntak er en feil som oppstår på tidspunktet for utførelsen av et program. Imidlertid genererer Python et unntak mens du kjører et program som bør håndteres for å unngå at programmet krasjer. På Python-språk utløses unntak automatisk ved feil, eller de kan utløses og fanges opp av koden din.
Unntaket indikerer at denne hendelsen skjer sjelden, selv om hendelsen kan inntreffe. Når metoden ikke er i stand til å håndtere unntaket, kastes den til innringerfunksjonen. Til slutt, når et unntak blir kastet ut av hovedfunksjonen, avsluttes programmet brått.
I denne eksepsjonelle håndteringsveiledningen for Python vil du lære:
- Hva er et unntak i Python?
- Vanlige eksempler på unntak
- Hvorfor bør du bruke unntak?
- Unntaksregler
- Eksepsjonell håndteringsmekanisme
- Forsøkserklæringen
- Fangstuttalelsen
- The Raise Statement
- Viktige Python-feil
- Andre viktige Python-unntak
- Feil kontra unntak
Vanlige eksempler på unntak:
- Divisjon av null
- Få tilgang til en fil som ikke eksisterer.
- Tillegg av to inkompatible typer
- Prøver å få tilgang til en ikke-eksisterende indeks for en sekvens
- Fjerne tabellen fra den frakoblede databaseserveren.
- ATM-uttak på mer enn tilgjengelig beløp
Hvorfor bør du bruke unntak?
Her er årsakene til at du bruker unntak i Python:
- Unntakshåndtering lar deg skille feilhåndteringskode fra normal kode.
- Et unntak er et Python-objekt som representerer en feil.
- Som med kodekommentarer, hjelper unntak deg med å minne deg selv på hva programmet forventer.
- Det tydeliggjør koden og forbedrer lesbarheten.
- Lar deg stimulere konsekvenser ettersom feilhåndteringen foregår på ett sted og på en måte.
- Et unntak er en praktisk metode for håndtering av feilmeldinger.
- I Python kan du opprette et unntak i programmet ved å bruke metoden for å heve unntak.
- Å heve et unntak hjelper deg med å bryte gjeldende kodeutførelse og returnerer unntaket tilbake til forventning til det blir håndtert.
- Behandler unntak for komponenter som ikke kan håndtere dem direkte.
Unntaksregler
Her er noen viktige regler for håndtering av Python-unntak:
- Unntak må være klasseobjekter
- For klassen unntak kan du bruke prøveerklæring med en unntatt klausul som nevner en bestemt klasse.
- Selv om et utsagn eller uttrykk er syntaktisk korrekt, kan det vise en feil når det blir gjort et forsøk på å utføre det.
- Feil funnet under henrettelse kalles unntak, og de er ikke ubetinget dødelige.
Eksepsjonell håndteringsmekanisme
Unntakshåndtering administreres av følgende 5 nøkkelord:
- prøve
- å fange
- endelig
- kaste
Forsøkserklæringen
En prøveerklæring inkluderer søkeordforsøk, etterfulgt av et kolon (:) og en pakke med kode der unntak kan forekomme. Den har en eller flere ledd.
Hvis ingen unntak skjedde da, under utførelsen av prøveerklæringen, ignorerer tolken unntakshåndtererne for den spesifikke prøveerklæringen.
I tilfelle hvis det oppstår unntak i en prøvepakke, utløper prøvepakken og programkontrollen overføres til den samsvarende unntatt behandleren som følger prøvepakken.
Syntax:try:statement(s)
Fangstuttalelsen
Fangstblokker tar ett argument om gangen, som er den typen unntak det sannsynligvis vil fange. Disse argumentene kan variere fra en bestemt type unntak som kan varieres til en kategori med unntak.
Regler for fangstblokk:
- Du kan definere en fangstblokk ved å bruke nøkkelordet fangst
- Catch Exception-parameteren ligger alltid i parentes
- Det representerer alltid typen unntak som fanger blokkhåndtak.
- En unntakshåndteringskode er skrevet mellom to {} krøllete bukseseler.
- Du kan plassere flere fangstblokker i en enkelt prøveblokk.
- Du kan bare bruke en fangstblokk etter prøveblokken.
- All fangstblokk skal bestilles fra underklasse til superklasse unntak.
Eksempel:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Endelig blokk
Til slutt kjøres alltid block uansett om unntaket blir kastet eller ikke. Det siste nøkkelordet lar deg lage en kodeblokk som følger en prøvefangst-blokk.
Til slutt er klausul valgfri. Det er ment å definere oppryddingshandlinger som skal utføres under alle forhold.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Til slutt blir klausul utført før prøveerklæring.
The Raise Statement
Hevingsuttalelsen spesifiserer et argument som initialiserer unntaksobjektet. Her følger et komma unntaksnavnet, og argumentet eller tupelen av argumentet som følger kommaet.
Syntaks:
raise [Exception [, args [, traceback]]]
I denne syntaksen er argumentet valgfritt, og på tidspunktet for utførelsen er argumentverdien for unntak alltid ingen.
Eksempel:
Et Python-unntak kan være hvilken som helst verdi som en streng, klasse, nummer eller et objekt. De fleste av disse unntakene som er reist av Python-kjernen, er klasser med et argument som er en forekomst av klassen.
Viktige Python-feil
Feiltype | Beskrivelse |
AritmetikkFeil | ArithmeticError fungerer som en basisklasse for alle aritmetiske unntak. Det er reist for feil i aritmetiske operasjoner. |
ImportError | ImportError heves når du prøver å importere en modul som ikke presenteres. Denne typen unntak oppstår hvis du har skrevet feil i modulnavnet eller modulen som ikke er til stede i standardstien. |
IndexError | En indeksfeil heves når du prøver å henvise til en sekvens som er utenfor rekkevidde. |
KeyError | Når en bestemt nøkkel ikke finnes i en ordbok, heves et KeyError-unntak. |
NameError | En NameError heves når et navn blir referert til i kode som aldri eksisterer i det lokale eller globale navneområdet. |
ValueError | Verdifeil heves når en funksjon eller innebygd operasjon mottar et argument som kan være av riktig type, men som ikke har passende verdi. |
EOFeil | Denne typen feil oppstår når en av de innebygde funksjonene (input () eller raw_input () når en EOF-tilstand uten å lese noen data. |
ZeroDivisonError | Denne typen feil hevet når divisjon eller modul med null finner sted for alle numeriske typer. |
IOError- | Denne typen feil hevet når en inngang / utgang mislykkes. |
syntaksfeil | Syntaksfeil hevet når det er en feil i Python-syntaksen. |
Innrykk Feil | Denne feilen hevet når innrykk ikke er riktig definert |
Andre viktige Python-unntak
Unntak | Beskrivelse |
Aritmetikk Unntak | Aritmetisk feil, for eksempel divisjon av null. |
ArraylndexOutOfBoundsException | Arrayindeks er utenfor grensene. |
ArrayStoreException | Tildeling hjelper deg til matriseelementet av en inkompatibel type. |
ClassCastException | Ugyldig rollebesetning |
MlegalMonitorStateException | Ulovlig skjermoperasjon, som å vente på en ulåst tråd. |
MlegalStateException | Miljø eller applikasjon er i feil tilstand. |
ClassNotFoundException | Klassen ble ikke funnet. |
CloneNotSupportedException | Forsøk å klone et objekt som ikke implementerer det klonable grensesnittet. |
Ulovlig tilgang unntak | Tilgang til en klasse nektes. |
InstantiationException | Oppstår når du prøver å lage et objekt fra et grensesnitt eller en abstrakt klasse. |
CloneNotSupportedException | Forsøk å klone et objekt som ikke implementerer grensesnittet. |
Feil kontra unntak
Feil | Unntak |
Alle feil i Python er den ukontrollerte typen. | Unntak inkluderer både merket og ukontrollert type. |
Det oppstår feil på kjøretiden som er ukjent for kompilatoren. | Unntak kan gjenopprettes ved å håndtere dem ved hjelp av prøvefangstblokker. |
Feil er hovedsakelig forårsaket av miljøet der et program kjører. | Selve applikasjonen gir unntak. |
Eksempler: OutofMemoryError | Eksempler: Avmerkede unntak, SQL-unntak, NullPointerException osv. |
Sammendrag
- Et unntak er en feil som skjedde under gjennomføringen av et program.
- Unntaket indikerer at denne hendelsen skjer sjelden, selv om hendelsen kan inntreffe.
- Vanlige eksempler på unntak er 1) Divisjon etter null, 2) Få tilgang til en fil som ikke eksisterer, 3) Tillegg av to inkompatible typer.
- Et unntak er et Python-objekt som representerer en feil.
- En prøveerklæring inkluderer søkeordforsøk, etterfulgt av et kolon (:) og en pakke med kode der unntak kan forekomme. Den har en eller flere ledd.
- Fangstblokker tar ett argument om gangen, som er den typen unntak det sannsynligvis vil fange.
- Hevingsuttalelsen spesifiserer et argument som initialiserer unntaksobjektet.
- Til slutt kjøres alltid block uansett om unntaket blir kastet eller ikke.