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:
- Syntaksfeil
- 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 if
uttalelsen.
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. dir
lar 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 assert uttalelse 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+C eller 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
, except
og finally
uttalelser. For å lære mer om dem, besøk Python try, unntatt og til slutt uttalelser.