Python Unntakshåndtering: prøv, fang, til slutt og hev [Eksempel]
Hva er en unntakshåndtering i Python?
Et unntak er en feil som oppstår på tidspunktet for kjøring av et program. Men mens du kjører et program, Python genererer et unntak som bør håndteres for å unngå at programmet krasjer. I Python språk, unntak utløses automatisk ved feil, eller de kan utløses og fanges opp av koden din.
Unntaket indikerer at selv om hendelsen kan inntreffe, skjer denne typen hendelser sjelden. Når metoden ikke er i stand til å håndtere unntaket, blir den kastet til anropsfunksjonen. Til slutt, når et unntak blir kastet ut av hovedfunksjonen, avsluttes programmet brått.
Vanlige eksempler på unntak
- Divisjon med null
- Tilgang til en fil som ikke eksisterer.
- Tilføyelse av to inkompatible typer
- Prøver å få tilgang til en ikke-eksisterende indeks for en sekvens
- Fjerner tabellen fra den frakoblede databaseserveren.
- Minibankuttak på mer enn tilgjengelig beløp
Hvorfor bør du bruke unntak?
Her er grunnene til å bruke unntak i Python:
- Unntakshåndtering lar deg skille feilhåndteringskode fra vanlig kode.
- Et unntak er a Python objekt som representerer en feil.
- Som med kodekommentarer, hjelper unntak deg til å minne deg selv på hva programmet forventer.
- Det tydeliggjør koden og forbedrer lesbarheten.
- Lar deg stimulere til konsekvenser ettersom feilhåndteringen foregår på ett sted og på én måte.
- Et unntak er en praktisk metode for å håndtere feilmeldinger.
- In Python, kan du reise et unntak i programmet ved å bruke metoden for heving unntak.
- Å heve et unntak hjelper deg med å bryte gjeldende kodekjøring og returnerer unntaket tilbake til forventningen til det er håndtert.
- Behandling av unntak for komponenter som ikke kan håndtere dem direkte.
Regler for unntak
Her er noen viktige regler for Python unntakshåndtering:
- Unntak må være klasseobjekter
- For klasseunntak kan du bruke try-setning med en except-klausul som nevner en bestemt klasse.
- Selv om en setning eller et uttrykk er syntaktisk korrekt, kan det vise en feil når det gjøres et forsøk på å utføre den.
- Feil funnet under utførelse kalles unntak, og de er ikke ubetinget dødelige.
Python Unntakshåndteringsmekanisme
Unntakshåndtering administreres av følgende 5 nøkkelord:
- prøve
- å fange
- endelig
- kaste
Python Prøv Statement
En try-setning inkluderer nøkkelord try, etterfulgt av et kolon (:) og en kodepakke der unntak kan forekomme. Den har en eller flere klausuler.
Under kjøringen av try-setningen, hvis ingen unntak skjedde da, ignorerer tolken unntaksbehandlerne for den spesifikke try-setningen.
I tilfelle, hvis et unntak oppstår i en prøvepakke, utløper prøvepakken og programkontrollen overføres til den samsvarende unntatt behandleren etter prøvepakken.
Syntax: try: statement(s)
Fangsterklæringen
Fangstblokker tar ett argument om gangen, som er den typen unntak de sannsynligvis vil fange. Disse argumentene kan variere fra en spesifikk type unntak som kan varieres til en oppsamlingskategori av unntak.
Regler for catch block:
- Du kan definere en fangstblokk ved å bruke nøkkelordet fangst
- Catch Exception-parameteren er alltid omsluttet av parentes
- Den representerer alltid den typen unntak som catch block håndterer.
- En unntakshåndteringskode er skrevet mellom to {} krøllete klammeparenteser.
- Du kan plassere flere catch-blokker i en enkelt forsøksblokk.
- Du kan bare bruke en catch-blokk etter prøveblokken.
- All fangstblokken skal bestilles fra underklasse til superklasseunntak.
Eksempel:
try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}
Endelig uttalelse i Python
Til slutt kjøres blokk alltid uavhengig av om et unntak blir kastet eller ikke. Det siste nøkkelordet lar deg lage en kodeblokk som følger en prøve-fangst-blokk.
Til slutt er klausul valgfri. Det er ment å definere oppryddingshandlinger som skal være det som utføres under alle forhold.
try:
raise KeyboardInterrupt
finally:
print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt
Til slutt blir klausulen utført før try-setningen.
Hev uttalelse i Python
Raise-setningen spesifiserer et argument som initialiserer unntaksobjektet. Her følger et komma unntaksnavnet, og argumentet eller tuppelen til argumentet som følger kommaet.
Syntaks:
raise [Exception [, args [, traceback]]]
I denne syntaksen er argumentet valgfritt, og på tidspunktet for utførelse er unntaksargumentverdien alltid ingen.
Eksempel:
A Python unntak kan være en hvilken som helst verdi som en streng, klasse, tall eller et objekt. De fleste av disse unntakene som er reist av Python core er klasser med et argument som er en forekomst av klassen.
Viktig Python feil
| Feiltype | Tekniske beskrivelser |
|---|---|
| Aritmetisk feil | ArithmeticError fungerer som en basisklasse for alle aritmetiske unntak. Det er hevet for feil i aritmetiske operasjoner. |
| Importerror | ImportError oppstår når du prøver å importere en modul som ikke finnes. Denne typen unntak oppstår hvis du har skrevet feil i modulnavnet eller modulen som ikke finnes i standardbanen. |
| Indeksfeil | En IndexErroris oppstår når du prøver å referere en sekvens som er utenfor rekkevidde. |
| KeyError | Når en spesifikk nøkkel ikke finnes i en ordbok, oppstår et KeyError-unntak. |
| Navnefeil | En NameError oppstår når et navn refereres til i kode som aldri eksisterer i det lokale eller globale navneområdet. |
| ValueError | Verdifeil oppstår 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 oppstår når deling eller modul med null finner sted for alle numeriske typer. |
| IOFeil- | Denne typen feil oppstår når en input/output-operasjon mislykkes. |
| syntaksFeil | Syntaksfeil oppstår når det er en feil i Python syntaks. |
| InnrykkFeil | Denne feilen oppsto når innrykk ikke er riktig definert |
Annet viktig Python unntak
| Unntak | Tekniske beskrivelser |
|---|---|
| Aritmetisk unntak | Aritmetisk feil, for eksempel divider med null. |
| ArraylndexOutOfBoundsException | Array-indeksen er utenfor grensene. |
| ArrayStoreException | Tildeling hjelper deg til array-elementet av en inkompatibel type. |
| ClassCastException | Ugyldig rollebesetning |
| MlegalMonitorStateException | Ulovlig monitoroperasjon, som å vente på en ulåst tråd. |
| MlegalStateException | Miljøet eller programmet er i feil tilstand. |
| ClassNotFoundException | Klasse ikke funnet. |
| CloneNotSupportedException | Forsøk å klone et objekt som ikke implementerer det klonebare grensesnittet. |
| Ulovlig tilgangsunntak | Tilgang til en klasse nektes. |
| InstantiationException | Oppstår når du prøver å lage et objekt av 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 uavmerkede typen. | Unntak inkluderer både avmerket og umerket type. |
| Feil oppstår under kjøretid som er ukjent for kompilatoren. | Unntak kan gjenopprettes ved å håndtere dem ved hjelp av try-catch-blokker. |
| Feil er hovedsakelig forårsaket av miljøet der en applikasjon kjører. | Selve applikasjonen forårsaker unntak. |
| Eksempler: OutofMemoryError |
Eksempler: Sjekket unntak, SQL-unntak, NullPointerException osv. |
Sammendrag
- Et unntak er en feil som skjedde under kjøringen av et program.
- Unntaket indikerer at selv om hendelsen kan inntreffe, skjer denne typen hendelser sjelden.
- Vanlige eksempler på unntak er 1) deling med null, 2) tilgang til en fil som ikke eksisterer, 3) tillegg av to inkompatible typer.
- Et unntak er a Python objekt som representerer en feil.
- En try-setning inkluderer nøkkelord try, etterfulgt av et kolon (:) og en kodepakke der unntak kan forekomme. Den har en eller flere klausuler.
- Fangstblokker tar ett argument om gangen, som er den typen unntak de sannsynligvis vil fange.
- Raise-setningen spesifiserer et argument som initialiserer unntaksobjektet.
- Til slutt, blokk utføres alltid uavhengig av om et unntak blir kastet eller ikke.
