Python-Fehlercodes
Python-Fehlercodes sind spezifische Ausnahmen und Fehlermeldungen, die vom Interpreter generiert werden, wenn ein Programm auf unerwartete Situationen stößt. Das Verständnis dieser Fehler ist für fortgeschrittene Entwickler entscheidend, um effizientes Debugging, stabile Programme und eine robuste Fehlerbehandlung zu gewährleisten. Fehler treten häufig auf, wenn die Syntax ungültig ist, falsche Datentypen verwendet werden, auf nicht vorhandene Ressourcen zugegriffen wird oder logische Fehler im Code vorliegen. Wichtige Konzepte sind Syntax, Ausnahmetypen, Debugging-Techniken und effektive Fehlerbehandlung. Durch die Beherrschung von Python-Fehlercodes können Entwickler die Fehlerursache schnell identifizieren, gezielt try/except
-Blöcke einsetzen und Diagnoseinformationen für den produktiven Einsatz protokollieren. Dieses Referenzdokument vermittelt eine umfassende Übersicht über gängige Fehler, deren Auslösebedingungen, Debugging-Strategien und Best Practices in der Backend-Entwicklung. Leser lernen, stabile und zuverlässige Systeme zu erstellen, die Risiken von Abstürzen minimieren und die Datensicherheit gewährleisten.
Betrachten wir ein Backend-System, das Benutzereingaben verarbeitet, Dateien liest und auf eine Datenbank zugreift. Fehler wie FileNotFoundError
, ValueError
oder ZeroDivisionError
können auftreten. Um die Stabilität des Systems zu gewährleisten, werden potenziell fehlerhafte Operationen in einen try
-Block gelegt, wobei jeder spezifische Ausnahmetyp mit einem eigenen except
-Block behandelt wird. So können spezifische Reaktionen implementiert, Debugging-Informationen protokolliert und alternative Maßnahmen ergriffen werden. Der finally
-Block stellt sicher, dass kritische Ressourcen wie Dateien oder Datenbankverbindungen unabhängig vom Auftreten eines Fehlers korrekt freigegeben werden. Dieses Vorgehen verhindert Programmabstürze, verbessert die Zuverlässigkeit und Wartbarkeit. In realen Backend-Anwendungen ist eine präzise Fehlerbehandlung entscheidend für Stabilität, Performance und Vertrauen der Anwender.
Example
pythondef daten_verarbeiten():
try:
# NameError: Verwendung einer nicht definierten Variable
print(nicht_definierte_variable)
# ZeroDivisionError: Division durch Null
ergebnis = 10 / 0
# ValueError: ungültige Typkonvertierung
zahl = int("abc")
# FileNotFoundError: Datei existiert nicht
with open("nicht_vorhandene_datei.txt", "r") as f:
inhalt = f.read()
# AttributeError: Aufruf einer nicht existierenden Methode
[].appendx(1)
except NameError as ne:
print(f"Gefangener NameError: {ne}")
except ZeroDivisionError as zde:
print(f"Gefangener ZeroDivisionError: {zde}")
except ValueError as ve:
print(f"Gefangener ValueError: {ve}")
except FileNotFoundError as fe:
print(f"Gefangener FileNotFoundError: {fe}")
except AttributeError as ae:
print(f"Gefangener AttributeError: {ae}")
except Exception as e:
print(f"Gefangene allgemeine Ausnahme: {e}")
finally:
print("Aufräumoperationen werden ausgeführt (Dateien schließen, Ressourcen freigeben)")
daten_verarbeiten()
📊 Comprehensive Reference
Error | Beschreibung | Wann es auftritt | Beispiel | Hinweise |
---|---|---|---|---|
SyntaxError | Syntaxfehler | Ungültiger Code | eval('x === 2') |
Wird beim Kompilieren erkannt |
IndentationError | Einrückungsfehler | Inkonsistente Einrückung | if True:\nprint("Hi") |
Unterklasse von SyntaxError |
TabError | Tab- und Leerzeichen gemischt | Gemischte Tabs und Leerzeichen | <tab> <space> print("Hi") |
Einheitliche Einrückung nötig |
NameError | Variable nicht definiert | Zugriff auf nicht deklarierte Variable | print(x) |
Häufig beim Debugging |
TypeError | Falscher Typ | Operation mit inkompatiblen Typen | 5 + "5" |
Python ist dynamisch typisiert |
ValueError | Ungültiger Wert | Falsche Konvertierung | int("abc") |
Eingaben prüfen |
IndexError | Index außerhalb Bereich | Liste wird außerhalb Bereich zugegriffen | lst = []; lst[1] |
Länge prüfen |
KeyError | Fehlender Schlüssel | Schlüssel nicht im Dict | d = {}; d['x'] |
dict.get() kann helfen |
AttributeError | Attribut existiert nicht | Objekt hat Attribut/Methoden nicht | [].appendx(1) |
Methodennamen prüfen |
ZeroDivisionError | Division durch Null | Divisor = 0 | 10 / 0 |
Divisor prüfen |
ImportError | Modul nicht gefunden | Fehlendes Modul | import nicht_modul |
Installation prüfen |
ModuleNotFoundError | Modul fehlt | Nicht vorhandenes Modul | import nicht_existentes_modul |
Python 3.6+ |
FileNotFoundError | Datei nicht vorhanden | Öffnen einer nicht existierenden Datei | open("nofile.txt") |
Pfad prüfen |
IsADirectoryError | Datei erwartet, Verzeichnis gegeben | open("ordner") |
OS-spezifisch | |
NotADirectoryError | Verzeichnis erwartet, Datei gegeben | os.listdir("file.txt") |
OS-spezifisch | |
PermissionError | Unzureichende Berechtigung | Zugriff auf Datei verboten | open("/root/file") |
Berechtigungen prüfen |
OSError | Systemfehler | Betriebssystemproblem | os.remove("/root/file") |
Basis vieler Fehler |
OverflowError | Numerische Überlauf | Wert zu groß | 2.0**10000 |
Selten in Python 3 |
RecursionError | Zu tiefe Rekursion | Endlos rekursive Funktion | def f(): f(); f() |
sys.setrecursionlimit() |
MemoryError | Nicht genügend Speicher | Zu große Objekterstellung | a = 'a' * 10**10 |
Systemabhängig |
StopIteration | Iterator erschöpft | Next auf leerem Iterator | next(iter([])) |
Eigene Iteratoren |
AssertionError | Assertion fehlgeschlagen | assert False |
Bedingung prüfen | |
FloatingPointError | Gleitkommafehler | Ungültige FP-Operation | numpy.seterr(all='raise') |
NumPy |
UnicodeError | Kodierungs-/Dekodierungsfehler | "ü".encode("ascii") |
Kodierung prüfen | |
UnicodeDecodeError | Dekodierung fehlgeschlagen | b'\xff'.decode('utf-8') |
Datei lesen | |
UnicodeEncodeError | Kodierung fehlgeschlagen | "ü".encode("ascii") |
Falsches Encoding | |
RecursionWarning | Warnung Rekursion | Zu tiefe Rekursion | import warnings |
Nicht fatal |
DeprecationWarning | Veraltete Funktion | Verwendung veralteter Funktion | warnings.warn("deprecated") |
Migration nötig |
RuntimeWarning | Runtime-Warnung | Potentielles Problem | import warnings |
Nicht fatal |
FutureWarning | Zukünftige Warnung | Funktion ändert sich | warnings.warn("future") |
Kompatibilität prüfen |
UserWarning | Benutzerwarnung | Eigene Warnungen | warnings.warn("user") |
Nicht fatal |
PendingDeprecationWarning | Bald veraltet | Funktion wird bald veraltet | warnings.warn("pending") |
Selten |
ResourceWarning | Ressource nicht freigegeben | Datei nicht geschlossen | open("file") |
Python 3+ |
ArithmeticError | Arithmetischer Fehler | Fehlerhafte mathematische Operation | int("x")/0 |
Basis arithm. Fehler |
BufferError | Pufferfehler | Ungültige Pufferoperation | memoryview(b'').release() |
Selten |
ConnectionError | Verbindungsfehler | Netzwerkfehler | requests.get("bad_url") |
Basis Netzwerkfehler |
BrokenPipeError | Pipe unterbrochen | Schreiben in geschlossene Pipe | os.write(fd, b'data') |
Unix |
ChildProcessError | Fehler Kindprozess | Fehler Kindprozess | os.waitpid(-1) |
Selten |
EOFError | Unerwartetes Dateiende | Eingabeende | input() EOF |
Leere Eingabe |
EnvironmentError | Umgebungsfehler | OS/Umgebung | os.remove("/root/file") |
OSError Basis |
GeneratorExit | Generator geschlossen | gen.close() |
Mit Generatoren | |
IOError | I/O Fehler | Fehler beim Lesen/Schreiben | open("/root/file") |
Python 3 -> OSError |
InterruptedError | Unterbrochen | Systemaufruf unterbrochen | os.read(fd, 0) |
Unix |
LookupError | Suchfehler | Ungültige Suche | d['x'] |
Basis Lookup Fehler |
ReferenceError | Ungültige Referenz | Schwache Referenz abgelaufen | import weakref |
Selten |
RuntimeError | Laufzeitfehler | raise RuntimeError() |
Allgemeiner Fehler | |
StopAsyncIteration | Async Iterator beendet | async for |
Python 3.5+ | |
SyntaxWarning | Syntaxwarnung | Fragwürdige Syntax | warnings.warn("syntax") |
Stoppt Programm nicht |
SystemError | Systemfehler | Interner Python Fehler | sys._getframe(0) |
Selten |
SystemExit | Systemausstieg | sys.exit() |
Beendet Programm | |
TimeoutError | Timeout | Operation überschreitet Zeit | socket.settimeout() |
Netzwerkaufruf |
UnboundLocalError | Nicht gebundene lokale Variable | Vor Zuweisung verwendet | x=1; def f(): print(x); x=2 |
NameError Subclass |
ZeroDivisionError | Division durch Null | Divisor = 0 | 10 / 0 |
Divisor prüfen |
📊 Complete Properties Reference
Error | Exception Type | Default Behavior | Description | Compatibility |
---|---|---|---|---|
SyntaxError | Exception | Programm stoppt | Syntaxfehler | Alle Python-Versionen |
IndentationError | SyntaxError | Programm stoppt | Einrückungsfehler | Alle Python-Versionen |
TabError | IndentationError | Programm stoppt | Tabs und Leerzeichen gemischt | Alle Python-Versionen |
NameError | Exception | Programm stoppt | Variable nicht definiert | Alle Python-Versionen |
TypeError | Exception | Programm stoppt | Falscher Typ | Alle Python-Versionen |
ValueError | Exception | Programm stoppt | Ungültiger Wert | Alle Python-Versionen |
IndexError | Exception | Programm stoppt | Index außerhalb Bereich | Alle Python-Versionen |
KeyError | Exception | Programm stoppt | Fehlender Schlüssel | Alle Python-Versionen |
AttributeError | Exception | Programm stoppt | Attribut/Methoden fehlen | Alle Python-Versionen |
ZeroDivisionError | ArithmeticError | Programm stoppt | Division durch Null | Alle Python-Versionen |
ImportError | Exception | Programm stoppt | Modul nicht gefunden | Alle Python-Versionen |
ModuleNotFoundError | ImportError | Programm stoppt | Modul fehlt | Python 3.6+ |
FileNotFoundError | OSError | Programm stoppt | Datei nicht vorhanden | Python 3+ |
IsADirectoryError | OSError | Programm stoppt | Datei erwartet, Verzeichnis gegeben | Python 3+ |
NotADirectoryError | OSError | Programm stoppt | Verzeichnis erwartet, Datei gegeben | Python 3+ |
PermissionError | OSError | Programm stoppt | Unzureichende Berechtigung | Python 3+ |
OSError | Exception | Programm stoppt | Systemfehler | Alle Python-Versionen |
OverflowError | ArithmeticError | Programm stoppt | Numerischer Überlauf | Alle Python-Versionen |
RecursionError | RuntimeError | Programm stoppt | Zu tiefe Rekursion | Python 3+ |
MemoryError | Exception | Programm stoppt | Nicht genügend Speicher | Alle Python-Versionen |
StopIteration | Exception | Programm stoppt | Iterator erschöpft | Alle Python-Versionen |
AssertionError | Exception | Programm stoppt | Assertion fehlgeschlagen | Alle Python-Versionen |
FloatingPointError | ArithmeticError | Programm stoppt | Gleitkommafehler | Alle Python-Versionen |
UnicodeError | ValueError | Programm stoppt | Kodierungs-/Dekodierungsfehler | Alle Python-Versionen |
UnicodeDecodeError | UnicodeError | Programm stoppt | Dekodierung fehlgeschlagen | Alle Python-Versionen |
UnicodeEncodeError | UnicodeError | Programm stoppt | Kodierung fehlgeschlagen | Alle Python-Versionen |
RecursionWarning | Warning | Programm läuft weiter | Warnung Rekursion | Alle Python-Versionen |
DeprecationWarning | Warning | Programm läuft weiter | Veraltete Funktion | Alle Python-Versionen |
RuntimeWarning | Warning | Programm läuft weiter | Runtime-Warnung | Alle Python-Versionen |
FutureWarning | Warning | Programm läuft weiter | Zukünftige Warnung | Alle Python-Versionen |
UserWarning | Warning | Programm läuft weiter | Benutzerwarnung | Alle Python-Versionen |
PendingDeprecationWarning | Warning | Programm läuft weiter | Bald veraltet | Alle Python-Versionen |
ResourceWarning | Warning | Programm läuft weiter | Ressource nicht freigegeben | Python 3+ |
ArithmeticError | Exception | Programm stoppt | Arithmetischer Fehler | Alle Python-Versionen |
BufferError | Exception | Programm stoppt | Pufferfehler | Alle Python-Versionen |
ConnectionError | OSError | Programm stoppt | Verbindungsfehler | Python 3+ |
BrokenPipeError | OSError | Programm stoppt | Pipe unterbrochen | Python 3+ |
ChildProcessError | OSError | Programm stoppt | Fehler Kindprozess | Python 3+ |
EOFError | Exception | Programm stoppt | Unerwartetes Dateiende | Alle Python-Versionen |
EnvironmentError | OSError | Programm stoppt | Umgebungsfehler | Python 3+ |
GeneratorExit | Exception | Programm stoppt | Generator geschlossen | Alle Python-Versionen |
IOError | OSError | Programm stoppt | I/O Fehler | Python 3+ |
InterruptedError | OSError | Programm stoppt | Unterbrochen | Python 3+ |
LookupError | Exception | Programm stoppt | Suchfehler | Alle Python-Versionen |
ReferenceError | Exception | Programm stoppt | Ungültige Referenz | Python 3+ |
RuntimeError | Exception | Programm stoppt | Laufzeitfehler | Alle Python-Versionen |
StopAsyncIteration | Exception | Programm stoppt | Async Iterator beendet | Python 3.5+ |
SyntaxWarning | Warning | Programm läuft weiter | Syntaxwarnung | Alle Python-Versionen |
SystemError | Exception | Programm stoppt | Systemfehler | Alle Python-Versionen |
SystemExit | Exception | Programm stoppt | Systemausstieg | Alle Python-Versionen |
TimeoutError | OSError | Programm stoppt | Timeout | Python 3+ |
UnboundLocalError | NameError | Programm stoppt | Nicht gebundene lokale Variable | Python 3+ |
ZeroDivisionError | ArithmeticError | Programm stoppt | Division durch Null | Alle Python-Versionen |
🧠 Testen Sie Ihr Wissen
Test Your Knowledge
Testen Sie Ihr Wissen über Python-Fehlercodes
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt