In deze tutorial leer je over verschillende soorten fouten en uitzonderingen die in Python zijn ingebouwd. Ze worden weergegeven wanneer de Python-interpreter fouten tegenkomt.
Video: Afhandeling van uitzonderingen in Python
We kunnen bepaalde fouten maken tijdens het schrijven van een programma die tot fouten leiden wanneer we het proberen uit te voeren. Een python-programma wordt beëindigd zodra er een niet-afgehandelde fout optreedt. Deze fouten kunnen grofweg in twee klassen worden ingedeeld:
- Syntaxisfouten
- Logische fouten (uitzonderingen)
Python-syntaxisfouten
Fout veroorzaakt door het niet volgen van de juiste structuur (syntaxis) van de taal wordt syntaxisfout of parseerfout genoemd .
Laten we naar een voorbeeld kijken:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Zoals in het voorbeeld wordt getoond, geeft een pijl aan waar de parser de syntaxisfout tegenkwam.
We kunnen hier opmerken dat er een dubbele punt :
ontbreekt in de if
verklaring.
Logische fouten in Python (uitzonderingen)
Fouten die optreden tijdens runtime (na het doorstaan van de syntaxis-test) worden uitzonderingen of logische fouten genoemd .
Ze komen bijvoorbeeld voor wanneer we proberen een bestand te openen (om te lezen) dat niet bestaat ( FileNotFoundError
), een getal door nul ( ZeroDivisionError
) proberen te delen of een module proberen te importeren die niet bestaat ( ImportError
).
Elke keer dat dit soort runtime-fouten optreden, maakt Python een uitzonderingsobject aan. Als het niet correct wordt afgehandeld, wordt er een traceback naar die fout afgedrukt, samen met enkele details over waarom die fout is opgetreden.
Laten we eens kijken hoe Python deze fouten behandelt:
>>> 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 ingebouwde uitzonderingen
Illegale operaties kunnen uitzonderingen opleveren. Er zijn tal van ingebouwde uitzonderingen in Python die worden gegenereerd wanneer overeenkomstige fouten optreden. We kunnen alle ingebouwde uitzonderingen local()
als volgt bekijken met behulp van de ingebouwde functie:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
zal een module met ingebouwde uitzonderingen, functies en attributen teruggeven. dir
stelt ons in staat om deze attributen als strings te vermelden.
Enkele van de veelvoorkomende ingebouwde uitzonderingen in Python-programmering, samen met de fout die ze veroorzaakt, worden hieronder vermeld:
Uitzondering | Oorzaak van fout |
---|---|
AssertionError | Verhoogd wanneer een assert instructie mislukt. |
AttributeError | Verhoogd wanneer attribuuttoewijzing of verwijzing mislukt. |
EOFError | Verhoogd wanneer de input() functie het einde van het bestand bereikt. |
FloatingPointError | Verhoogd wanneer een drijvende-kommabewerking mislukt. |
GeneratorExit | Verhoog wanneer de close() methode van een generator wordt aangeroepen. |
ImportError | Wordt weergegeven wanneer de geïmporteerde module niet wordt gevonden. |
IndexError | Verhoogd wanneer de index van een reeks buiten bereik is. |
KeyError | Verhoogd wanneer een sleutel niet in een woordenboek wordt gevonden. |
KeyboardInterrupt | Verhoogd wanneer de gebruiker op de interrupt-toets ( Ctrl+C of Delete ) drukt . |
MemoryError | Verhoogd wanneer een bewerking onvoldoende geheugen heeft. |
NameError | Verhoogd wanneer een variabele niet wordt gevonden in een lokaal of globaal bereik. |
NotImplementedError | Opgegroeid met abstracte methoden. |
OSError | Verhoogd wanneer de werking van het systeem een systeemgerelateerde fout veroorzaakt. |
OverflowError | Verhoogd wanneer het resultaat van een rekenkundige bewerking te groot is om te worden weergegeven. |
ReferenceError | Verhoogd wanneer een zwakke referentie-proxy wordt gebruikt om toegang te krijgen tot een garbagecollection-referent. |
RuntimeError | Wordt weergegeven wanneer een fout niet onder een andere categorie valt. |
StopIteration | Verhoogd door next() functie om aan te geven dat er geen item meer is dat door iterator kan worden geretourneerd. |
SyntaxError | Verhoogd door parser wanneer er een syntaxisfout optreedt. |
IndentationError | Verhoogd als er een onjuiste inspringing is. |
TabError | Verhoogd wanneer de inspringing bestaat uit inconsistente tabbladen en spaties. |
SystemError | Verhoogd wanneer de tolk een interne fout detecteert. |
SystemExit | Verhoogd door sys.exit() functie. |
TypeError | Wordt weergegeven wanneer een functie of bewerking wordt toegepast op een object van een onjuist type. |
UnboundLocalError | Wordt verhoogd wanneer er wordt verwezen naar een lokale variabele in een functie of methode, maar er is geen waarde aan die variabele gebonden. |
UnicodeError | Verhoogd wanneer een Unicode-gerelateerde coderings- of decoderingsfout optreedt. |
UnicodeEncodeError | Verhoogd wanneer een Unicode-gerelateerde fout optreedt tijdens het coderen. |
UnicodeDecodeError | Verhoogd wanneer een Unicode-gerelateerde fout optreedt tijdens het decoderen. |
UnicodeTranslateError | Wordt weergegeven wanneer er een Unicode-gerelateerde fout optreedt tijdens het vertalen. |
ValueError | Verhoogd wanneer een functie een argument van het juiste type krijgt, maar een onjuiste waarde. |
ZeroDivisionError | Verhoogd wanneer de tweede operand van deling of modulo-bewerking nul is. |
Indien nodig kunnen we ook onze eigen uitzonderingen in Python definiëren. Ga voor meer informatie over door gebruikers gedefinieerde uitzonderingen naar Python.
We kunnen deze ingebouwde en door de gebruiker gedefinieerde uitzonderingen in Python afhandelen met behulp van try
, except
en finally
instructies. Ga naar Python try, behalve en ten slotte statements voor meer informatie over hen.