Python-fouten en ingebouwde uitzonderingen
Python-fouten en ingebouwde uitzonderingen
In deze zelfstudie leert u over verschillende soorten fouten en uitzonderingen die in Python zijn ingebouwd. Ze worden geactiveerd wanneer de Python-interpreter fouten tegenkomt.
Video:Afhandeling van Python-uitzonderingen
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 het een onverwerkte fout tegenkomt. 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 genoemd of parseerfout .
Laten we een voorbeeld bekijken:
>>> if a < 3
File "<interactive input>", 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 zien dat een dubbele punt :
ontbreekt in de if
verklaring.
Logische Python-fouten (uitzonderingen)
Fouten die optreden tijdens runtime (na het passeren van de syntaxistest) worden uitzonderingen genoemd of logische fouten .
Ze treden bijvoorbeeld op wanneer we een bestand proberen te openen (om te lezen) dat niet bestaat (FileNotFoundError
), probeer een getal te delen door nul (ZeroDivisionError
), of probeer een module te importeren die niet bestaat (ImportError
).
Telkens wanneer dit soort runtime-fouten optreden, maakt Python een uitzonderingsobject. Als het niet op de juiste manier wordt afgehandeld, wordt 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 "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
>>> open("imaginary.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'
Ingebouwde Python-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 bekijken met behulp van de ingebouwde local()
functioneren als volgt:
print(dir(locals()['__builtins__']))
locals()['__builtins__']
retourneert een module met ingebouwde uitzonderingen, functies en attributen. dir
stelt ons in staat om deze attributen als strings weer te geven.
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 verklaring mislukt. |
AttributeError | Verhoogd wanneer attribuuttoewijzing of referentie mislukt. |
EOFError | Verhoogd wanneer de input() functie raakt einde bestand. |
FloatingPointError | Verhoogd wanneer een drijvende-kommabewerking mislukt. |
GeneratorExit | Verhoog wanneer een generator close() methode wordt aangeroepen. |
ImportError | Verhoogd 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 drukt (Ctrl+C of Delete ). |
MemoryError | Verhoogd wanneer een bewerking onvoldoende geheugen heeft. |
NameError | Verhoogd wanneer een variabele niet wordt gevonden in het lokale of globale bereik. |
NotImplementedError | Opgevoed door abstracte methoden. |
OSError | Verhoogd wanneer systeemwerking systeemgerelateerde fouten veroorzaakt. |
OverflowError | Verhoogd wanneer het resultaat van een rekenkundige bewerking te groot is om te worden weergegeven. |
ReferenceError | Wordt verhoogd wanneer een zwakke referentieproxy wordt gebruikt om toegang te krijgen tot een op rommel verzamelde referent. |
RuntimeError | Wordt opgeheven wanneer een fout niet onder een andere categorie valt. |
StopIteration | Opgegroeid door next() functie om aan te geven dat er geen verder item is dat door de iterator moet worden geretourneerd. |
SyntaxError | Verhoogd door parser wanneer syntaxisfout wordt aangetroffen. |
IndentationError | Verhoogd wanneer er een onjuiste inspringing is. |
TabError | Verhoogd wanneer inspringen bestaat uit inconsistente tabs en spaties. |
SystemError | Wordt opgeheven wanneer de tolk een interne fout detecteert. |
SystemExit | Opgegroeid door sys.exit() functie. |
TypeError | Wordt verhoogd 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 | Wordt opgeheven wanneer een Unicode-gerelateerde fout optreedt tijdens het coderen. |
UnicodeDecodeError | Wordt opgeheven wanneer een Unicode-gerelateerde fout optreedt tijdens het decoderen. |
UnicodeTranslateError | Wordt opgeheven wanneer een Unicode-gerelateerde fout optreedt tijdens het vertalen. |
ValueError | Verhoogd wanneer een functie een argument van het juiste type maar een onjuiste waarde krijgt. |
ZeroDivisionError | Verhoogd wanneer de tweede operand van deling of modulo-bewerking nul is. |
Indien nodig kunnen we ook onze eigen uitzonderingen definiëren in Python. Ga naar Python User-defined Exceptions voor meer informatie.
We kunnen deze ingebouwde en door de gebruiker gedefinieerde uitzonderingen in Python afhandelen met behulp van try
, except
en finally
verklaringen. Voor meer informatie over hen, bezoek Python try, behalve en tenslotte statements.
Python
- Python-sleutelwoorden en -ID's
- Python-verklaring, inspringing en opmerkingen
- Python-variabelen, constanten en literalen
- Python Type Conversie en Type Casting
- Python invoer, uitvoer en import
- Python globale, lokale en niet-lokale variabelen
- Python-nummers, typeconversie en wiskunde
- Python-directory en bestandsbeheer
- Aangepaste Python-uitzonderingen
- Hoe de huidige datum en tijd in Python te krijgen?
- Java worp en worpen