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:
- Syntaksfejl
- 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 if
erklæ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. dir
giver 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 assert erklæ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+C eller 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
, except
og finally
udsagn. Hvis du vil lære mere om dem, skal du besøge Python try, undtagen og endelig udsagn.