Python-fejl og indbyggede undtagelser

I denne vejledning lærer du om forskellige typer fejl og undtagelser, der er indbygget i Python. De hæves, når Python-tolken støder på fejl.

Video: Python Exception Handling

Vi kan lave visse fejl, mens vi skriver et program, der fører til fejl, når vi prøver at køre det. Et python-program afsluttes, så snart det støder på en uhåndteret fejl. Disse fejl kan stort set klassificeres i to klasser:

  1. Syntaksfejl
  2. Logiske fejl (undtagelser)

Python-syntaksfejl

Fejl forårsaget af ikke at følge sprogets korrekte struktur (syntaks) kaldes syntaksfejl eller parsefejl .

Lad os se på et eksempel:

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

Som vist i eksemplet angiver en pil, hvor parseren løb ind i syntaksfejlen.

Vi kan her bemærke, at :der mangler et kolon i iferklæringen.

Python-logiske fejl (undtagelser)

Fejl, der opstår ved kørsel (efter bestået syntaks test) kaldes undtagelser eller logiske fejl .

For eksempel opstår de, når vi prøver at åbne en fil (til læsning), der ikke findes ( FileNotFoundError), prøve at dele et tal med nul ( ZeroDivisionError) eller prøve at importere et modul, der ikke findes ( ImportError).

Når disse typer runtime-fejl opstår, opretter Python et undtagelsesobjekt. Hvis det ikke håndteres ordentligt, udskriver det et spor til denne fejl sammen med nogle detaljer om, hvorfor denne fejl opstod.

Lad os se på, hvordan Python behandler disse fejl:

 >>> 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 indbyggede undtagelser

Ulovlige operationer kan medføre undtagelser. Der er masser af indbyggede undtagelser i Python, der hæves, når tilsvarende fejl opstår. Vi kan se alle de indbyggede undtagelser ved hjælp af den indbyggede local()funktion som følger:

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

locals()('__builtins__')returnerer et modul med indbyggede undtagelser, funktioner og attributter. dirgiver os mulighed for at liste disse attributter som strenge.

Nogle af de almindelige indbyggede undtagelser i Python-programmering sammen med den fejl, der forårsager dem, er angivet nedenfor:

Undtagelse Fejlårsag
AssertionError Hævet, når en asserterklæring mislykkes.
AttributeError Hæves, når attributttildeling eller reference mislykkes.
EOFError Hæves, når input()funktionen rammer slutningen af ​​filtilstand.
FloatingPointError Hæves, når en flydende punkt mislykkes.
GeneratorExit Hæv, når en generators close()metode kaldes.
ImportError Hæves, når det importerede modul ikke findes.
IndexError Hæves, når indekset for en sekvens er uden for området.
KeyError Hæves, når en nøgle ikke findes i en ordbog.
KeyboardInterrupt Hæves, når brugeren rammer afbrydelsestasten ( Ctrl+Celler Delete).
MemoryError Hæves, når en operation løber tør for hukommelse.
NameError Hæves, når en variabel ikke findes i lokalt eller globalt omfang.
NotImplementedError Oprejst med abstrakte metoder.
OSError Oprejst, når systemfunktion forårsager systemrelateret fejl.
OverflowError Oprejst, når resultatet af en aritmetisk operation er for stort til at blive repræsenteret.
ReferenceError Oprejst, når en svag reference-proxy bruges til at få adgang til en referent, der er indsamlet skrald.
RuntimeError Raised when an error does not fall under any other category.
StopIteration Raised by next() function to indicate that there is no further item to be returned by iterator.
SyntaxError Raised by parser when syntax error is encountered.
IndentationError Raised when there is incorrect indentation.
TabError Raised when indentation consists of inconsistent tabs and spaces.
SystemError Raised when interpreter detects internal error.
SystemExit Raised by sys.exit() function.
TypeError Raised when a function or operation is applied to an object of incorrect type.
UnboundLocalError Raised when a reference is made to a local variable in a function or method, but no value has been bound to that variable.
UnicodeError Raised when a Unicode-related encoding or decoding error occurs.
UnicodeEncodeError Raised when a Unicode-related error occurs during encoding.
UnicodeDecodeError Raised when a Unicode-related error occurs during decoding.
UnicodeTranslateError Oprejst, når der opstår en Unicode-relateret fejl under oversættelsen.
ValueError Hæves, når en funktion får et argument af korrekt type, men forkert værdi.
ZeroDivisionError Hæves, når den anden operand af division eller modulo-operation er nul.

Hvis det er nødvendigt, kan vi også definere vores egne undtagelser i Python. Hvis du vil lære mere om dem, skal du besøge Python brugerdefinerede undtagelser.

Vi kan håndtere disse indbyggede og brugerdefinerede undtagelser i Python hjælp try, exceptog finallyudsagn. Hvis du vil lære mere om dem, skal du besøge Python try, undtagen og endelig udsagn.

Interessante artikler...