Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Fehler & eingebaute Exceptions meistern

Python-Fehler und eingebaute Exceptions

Entdecken Sie, wie Python Probleme signalisiert, den Unterschied zwischen Syntax- und Laufzeitfehlern und wie Sie eingebaute Exceptions sicher handhaben.

Video: Python Exception Handling

Wenn Sie ein Python-Programm ausführen, stoppt der Interpreter die Ausführung sofort, wenn er auf einen unbehandelten Fehler stößt. Diese Fehler fallen in zwei große Kategorien:

  1. Syntaxfehler – Probleme, die während des Parsens erkannt werden.
  2. Logische Fehler (Exceptions) – Probleme, die während der Codeausführung auftreten.

Python-Syntaxfehler

Ein Syntaxfehler tritt auf, wenn der Quellcode gegen Pythons Grammatikregeln verstößt. Der Interpreter weist mit einem Caret (^) in der Fehlermeldung auf die genaue Stelle hin.

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

In diesem Beispiel löst der fehlende Doppelpunkt (:) nach der if-Anweisung einen SyntaxError aus.


Python-logische Fehler (Exceptions)

Logische Fehler, oder Exceptions, treten erst auf, nachdem der Code den Syntax-Check bestanden hat. Häufige Beispiele sind:

Wenn eine Exception ausgelöst wird, erstellt Python ein Exception-Objekt. Bleibt es unbehandelt, wird ein Traceback ausgegeben, der den Call Stack und den Grund für den Fehler anzeigt.

> >>> 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'

Python eingebaute Exceptions

Pythons Interpreter löst eine Vielzahl eingebauter Exceptions aus, um verschiedene Fehlerbedingungen zu signalisieren. Sie können sie mit folgendem Snippet auflisten:

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

Nachfolgend eine kompakte Referenz für einige der häufigsten eingebauten Exceptions und die Situationen, die sie auslösen:

ExceptionFehlerursache
AssertionErrorWird ausgelöst, wenn eine assert-Anweisung fehlschlägt.
AttributeErrorWird ausgelöst, wenn eine Attributzuweisung oder -referenz fehlschlägt.
EOFErrorWird ausgelöst, wenn die input()-Funktion eine End-of-File-Bedingung trifft.
FloatingPointErrorWird ausgelöst, wenn eine Gleitkomma-Operation fehlschlägt.
GeneratorExitWird ausgelöst, wenn die close()-Methode eines Generators aufgerufen wird.
ImportErrorWird ausgelöst, wenn das importierte Modul nicht gefunden werden kann.
IndexErrorWird ausgelöst, wenn ein Sequenzindex außerhalb des Bereichs liegt.
KeyErrorWird ausgelöst, wenn ein Schlüssel in einem Dictionary fehlt.
KeyboardInterruptWird ausgelöst, wenn der Benutzer Strg+C oder Entf drückt.
MemoryErrorWird ausgelöst, wenn eine Operation den verfügbaren Speicher überschreitet.
NameErrorWird ausgelöst, wenn eine Variable im lokalen oder globalen Scope nicht gefunden wird.
NotImplementedErrorWird von abstrakten Methoden ausgelöst, die keine Implementierung haben.
OSErrorWird für systembezogene Fehler ausgelöst (z. B. Datei-I/O).
OverflowErrorWird ausgelöst, wenn ein arithmetisches Ergebnis zu groß für die Darstellung ist.
ReferenceErrorWird ausgelöst, wenn ein schwacher Referenz-Proxy ein garbage-collected Objekt referenziert.
RuntimeErrorWird für Fehler ausgelöst, die in keine andere Kategorie passen.
StopIterationWird von next() ausgelöst, wenn ein Iterator erschöpft ist.
SyntaxErrorWird ausgelöst, wenn der Parser ungültige Syntax erkennt.
IndentationErrorWird ausgelöst, wenn die Einrückung inkorrekt ist.
TabErrorWird ausgelöst, wenn Einrückung Tabs und Spaces inkonsistent mischt.
SystemErrorWird ausgelöst, wenn der Interpreter einen internen Fehler erkennt.
SystemExitWird durch sys.exit() ausgelöst.
TypeErrorWird ausgelöst, wenn eine Operation oder Funktion ein Objekt unangemessenen Typs erhält.
UnboundLocalErrorWird ausgelöst, wenn eine lokale Variable vor der Zuweisung referenziert wird.
UnicodeErrorWird für Unicode-bezogene Encoding- oder Decoding-Fehler ausgelöst.
UnicodeEncodeErrorWird bei Unicode-Encoding-Fehlern ausgelöst.
UnicodeDecodeErrorWird bei Unicode-Decoding-Fehlern ausgelöst.
UnicodeTranslateErrorWird bei Unicode-Übersetzungsfehlern ausgelöst.
ValueErrorWird ausgelöst, wenn eine Funktion ein Argument korrekten Typs, aber unangemessenen Werts erhält.
ZeroDivisionErrorWird ausgelöst, bei Division oder Modulo durch Null.

Wenn Sie granulare Kontrolle benötigen, erlaubt Python die Definition benutzerdefinierter Exception-Klassen. Siehe Python benutzerdefinierte Exceptions für Details.

Die Behandlung von Exceptions ist unkompliziert mit try, except und finally Blöcken. Für einen tieferen Einstieg siehe Python try, except und finally Anweisungen.


Python

  1. Python-Schlüsselwörter & Bezeichner: Reservierte Wörter & Benennungskonventionen meistern
  2. Python-Anweisungen, Einrückung & Kommentare: Klare Anleitung
  3. Python-Variablen, Konstanten & Literale – Umfassender Leitfaden
  4. Python-Typkonvertierung & Casting meistern: Umfassender Leitfaden
  5. Python I/O & Modul-Importe meistern: Praxisleitfaden
  6. Python Global, Local & Nonlocal Variablen verstehen
  7. Zahlen, Typkonvertierung und Mathematik in Python meistern
  8. Verzeichnis- und Dateioperationen in Python meistern
  9. Python benutzerdefinierte Exceptions: Ein praktischer Leitfaden
  10. Aktuelles Datum und Uhrzeit in Python abrufen: Praktischer Leitfaden