Python-feil og innebygde unntak

I denne opplæringen vil du lære om forskjellige typer feil og unntak som er innebygd i Python. De blir reist når Python-tolken støter på feil.

Video: Python Exception Handling

Vi kan gjøre visse feil mens vi skriver et program som fører til feil når vi prøver å kjøre det. Et python-program avsluttes så snart det støter på en uhåndtert feil. Disse feilene kan stort sett klassifiseres i to klasser:

  1. Syntaksfeil
  2. Logiske feil (unntak)

Python-syntaksfeil

Feil forårsaket av ikke å følge riktig struktur (syntaks) for språket kalles syntaksfeil eller parsefeil .

La oss se på ett eksempel:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Som vist i eksemplet, indikerer en pil hvor parseren kjørte inn i syntaksfeilen.

Vi kan her merke at det :mangler et kolon i ifuttalelsen.

Python logiske feil (unntak)

Feil som oppstår ved kjøretid (etter bestått syntakstest) kalles unntak eller logiske feil .

For eksempel oppstår de når vi prøver å åpne en fil (for lesing) som ikke eksisterer ( FileNotFoundError), prøve å dele et tall med null ( ZeroDivisionError), eller prøve å importere en modul som ikke eksisterer ( ImportError).

Når denne typen kjøretidsfeil oppstår, oppretter Python et unntaksobjekt. Hvis den ikke håndteres riktig, skriver den ut en sporbarhet til feilen sammen med noen detaljer om hvorfor feilen oppstod.

La oss se på hvordan Python behandler disse feilene:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Python Innebygde unntak

Ulovlig virksomhet kan gi unntak. Det er mange innebygde unntak i Python som heves når tilsvarende feil oppstår. Vi kan se alle de innebygde unntakene ved hjelp av den innebygde local()funksjonen som følger:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')vil returnere en modul med innebygde unntak, funksjoner og attributter. dirlar oss liste opp disse attributtene som strenger.

Noen av de vanlige innebygde unntakene i Python-programmering sammen med feilen som forårsaker dem, er oppført nedenfor:

Unntak Årsak til feil
AssertionError Hevet når en assertuttalelse mislykkes.
AttributeError Heves når attributtoppgave eller referanse mislykkes.
EOFError Hevet når input()funksjonen treffer slutten av filtilstanden.
FloatingPointError Heves når en flytende punktoperasjon mislykkes.
GeneratorExit Hev når en generator close()metode kalles.
ImportError Heves når den importerte modulen ikke blir funnet.
IndexError Heves når indeksen til en sekvens er utenfor området.
KeyError Heves når en nøkkel ikke finnes i en ordbok.
KeyboardInterrupt Heves når brukeren treffer avbruddstasten ( Ctrl+Celler Delete).
MemoryError Oppvokst når en operasjon går tom for minne.
NameError Heves når en variabel ikke finnes i lokalt eller globalt omfang.
NotImplementedError Oppvokst med abstrakte metoder.
OSError Oppvokst når systemdrift forårsaker systemrelatert feil.
OverflowError Oppvokst når resultatet av en aritmetisk operasjon er for stort til å bli representert.
ReferenceError Oppvokst når en svak referanseproxy brukes for å få tilgang til en referent som samles inn.
RuntimeError Opphevet når en feil ikke faller inn under noen annen kategori.
StopIteration Hevet etter next()funksjon for å indikere at det ikke er noen gjenstand som skal returneres av iteratoren.
SyntaxError Oppvokst av parser når syntaksfeil oppstår.
IndentationError Hevet når det er feil innrykk.
TabError Hevet når innrykk består av inkonsekvente faner og mellomrom.
SystemError Hevet når tolk oppdager interne feil.
SystemExit Oppvokst av sys.exit()funksjon.
TypeError Oppvokst når en funksjon eller operasjon brukes på et objekt av feil type.
UnboundLocalError Heves når det henvises til en lokal variabel i en funksjon eller metode, men ingen verdi er bundet til den variabelen.
UnicodeError Oppvokst når en Unicode-relatert kodings- eller dekodingsfeil oppstår.
UnicodeEncodeError Oppvokst når en Unicode-relatert feil oppstår under kodingen.
UnicodeDecodeError Oppvokst når en Unicode-relatert feil oppstår under dekoding.
UnicodeTranslateError Oppvokst når en Unicode-relatert feil oppstår under oversettelsen.
ValueError Oppvokst når en funksjon får et argument av riktig type, men feil verdi.
ZeroDivisionError Hevet når den andre operanden for divisjon eller modulo-operasjon er null.

Om nødvendig kan vi også definere våre egne unntak i Python. Hvis du vil lære mer om dem, kan du gå til Python brukerdefinerte unntak.

Vi kan håndtere disse innebygde og brukerdefinerte unntak i Python bruker try, exceptog finallyuttalelser. For å lære mer om dem, besøk Python try, unntatt og til slutt uttalelser.

Interessante artikler...