Python-fouten en ingebouwde uitzonderingen

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:

  1. Syntaxisfouten
  2. 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 ifverklaring.

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. dirstelt 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 assertinstructie 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+Cof 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, excepten finallyinstructies. Ga naar Python try, behalve en ten slotte statements voor meer informatie over hen.

Interessante artikelen...