Python Exception Handling: Try, Catch, Endelig

Innholdsfortegnelse:

Anonim

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:

  1. prøve
  2. å fange
  3. endelig
  4. 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.