Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python-fouten & ingebouwde exceptions beheersen

Python-fouten en ingebouwde exceptions

Ontdek hoe Python problemen signaleert, het verschil tussen syntax- en runtime-fouten, en hoe je ingebouwde exceptions met vertrouwen afhandelt.

Video: Python-exception handling

Wanneer je een Python-programma uitvoert, stopt de interpreter direct als er een onafgevangen fout optreedt. Deze fouten vallen in twee brede categorieën:

  1. Syntax-fouten – problemen gedetecteerd tijdens parsen.
  2. Logische fouten (exceptions) – problemen die ontstaan tijdens uitvoering van de code.

Python-syntaxfouten

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

In dit voorbeeld ontbreekt de dubbele punt (:) na de if-statement, wat een SyntaxError triggert.


Python-logische fouten (exceptions)

Logische fouten, of exceptions, duiken pas op nadat de code de syntax-check is gepasse. Veelvoorkomende voorbeelden:

  • Delen door nul (ZeroDivisionError)
  • Openen van een niet-bestaand bestand (FileNotFoundError)
  • Importeren van een onbeschikbare module (ImportError)

Wanneer een exception wordt gegooid, creëert Python een exception-object. Als het onafgevangen blijft, wordt een traceback geprint met de call stack en de reden van de fout.

> >>> 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("onbestaand.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: 'onbestaand.txt'

Python-ingebouwde exceptions

Python's interpreter gooit een breed scala aan ingebouwde exceptions om verschillende foutcondities te signaleren. Je kunt ze lijsten met:

print(dir(locals()['__builtins__']))

Hieronder een beknopt overzicht van de meest voorkomende ingebouwde exceptions en de situaties die ze triggeren:

ExceptionOorzaak van fout
AssertionErrorGegooid wanneer een assert-statement faalt.
AttributeErrorGegooid bij mislukte attribuuttoewijzing of -referentie.
EOFErrorGegooid wanneer input() een end-of-file conditie tegenkomt.
FloatingPointErrorGegooid bij mislukte drijvende-komma operatie.
GeneratorExitGegooid wanneer een generator's close() methode wordt aangeroepen.
ImportErrorGegooid wanneer geïmporteerde module niet gevonden kan worden.
IndexErrorGegooid wanneer een sequentie-index buiten bereik is.
KeyErrorGegooid wanneer een sleutel ontbreekt in een dictionary.
KeyboardInterruptGegooid wanneer gebruiker Ctrl+C of Delete indrukt.
MemoryErrorGegooid wanneer een operatie beschikbaar geheugen overschrijdt.
NameErrorGegooid wanneer een variabele niet in lokale of globale scope gevonden wordt.
NotImplementedErrorGegooid door abstracte methoden zonder implementatie.
OSErrorGegooid voor systeemgerelateerde fouten (bijv. bestands-I/O).
OverflowErrorGegooid wanneer rekenkundig resultaat te groot is om te representeren.
ReferenceErrorGegooid wanneer een zwakke referentie een garbage-collected object proxeert.
RuntimeErrorGegooid voor fouten die niet in andere categorieën passen.
StopIterationGegooid door next() wanneer een iterator uitgeput is.
SyntaxErrorGegooid wanneer de parser ongeldige syntax tegenkomt.
IndentationErrorGegooid bij incorrecte indentatie.
TabErrorGegooid wanneer indentatie tabs en spaces inconsistente mengt.
SystemErrorGegooid wanneer de interpreter een interne fout detecteert.
SystemExitGegooid door sys.exit().
TypeErrorGegooid wanneer een operatie of functie een object van ongeschikt type ontvangt.
UnboundLocalErrorGegooid wanneer een lokale variabele geraadpleegd wordt vóór toewijzing.
UnicodeErrorGegooid voor Unicode-gerelateerde encoding/decoding fouten.
UnicodeEncodeErrorGegooid tijdens Unicode-encoding fouten.
UnicodeDecodeErrorGegooid tijdens Unicode-decoding fouten.
UnicodeTranslateErrorGegooid tijdens Unicode-vertaling fouten.
ValueErrorGegooid wanneer een functie een argument van correct type maar ongeschikte waarde ontvangt.
ZeroDivisionErrorGegooid bij delen of modulo door nul.

Als je meer granulair controle nodig hebt, staat Python je toe om custom exception-klassen te definiëren. Zie Python User-defined Exceptions voor details.

Exceptions afhandelen is eenvoudig met try, except en finally blokken. Voor een diepere duik, raadpleeg Python try, except and finally statements.

Python

  1. Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
  2. Python Statements, Indentatie en Comments: Een duidelijke gids
  3. Python Variabelen, Constanten en Literals – Een uitgebreide gids
  4. Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
  5. Python I/O en Module Imports onder de knie krijgen: Een praktische gids
  6. Python Global, Local en Nonlocal Variabelen begrijpen
  7. Python getallen, typeconversie en wiskunde beheersen
  8. Python-directory en bestandsbewerkingen beheersen
  9. Python-custom exceptions: een praktische gids
  10. Huidige datum en tijd ophalen in Python: een praktische gids
  11. Java throw vs throws: Exception Handling meesteren met praktische voorbeelden