Python - Eingebaute Ausnahmen

Hallo, aufstrebende Programmierer! Heute tauchen wir in die faszinierende Welt der eingebauten Ausnahmen in Python ein. Keine Sorge, wenn du neu in der Programmierung bist; ich werde dich in diesem Thema Schritt für Schritt durchführen, genau wie ich es für unzählige Studenten in meinen Jahren des Unterrichtens getan habe. Lass uns gemeinsam auf diese aufregende Reise aufbrechen!

Python - Built-in Exceptions

Standardmäßige eingebaute Ausnahmen in Python

Stell dir vor, du bist in der Küche und Realisierst plötzlich, dass du ein wichtiges Zutat fehlt. Das ist ähnlich, was in der Programmierung passiert, wenn eine Ausnahme auftritt - etwas Unerwartetes, das den normalen Ablauf deines Codes stört. Python verfügt über eine Vielzahl eingebauter Ausnahmen, um verschiedene Arten von Fehlern zu behandeln.

Hier sind einige der häufigsten eingebauten Ausnahmen:

  1. SyntaxError: Das ist, als ob man vergisst, eine Periode am Ende eines Satzes zu setzen. Python wirft diese Ausnahme, wenn es eine falsche Syntax findet.
print "Hallo, Welt!"  # SyntaxError: Fehlende Klammern in Aufruf zu 'print'

In diesem Beispiel haben wir vergessen, Klammern um den String in der print-Funktion hinzuzufügen, was in Python 3 erforderlich ist.

  1. NameError: Dies tritt auf, wenn du versuchst, eine Variable zu verwenden, die noch nicht definiert wurde.
print(x)  # NameError: name 'x' is not defined

Hier versuchen wir, eine Variable 'x' auszudrucken, die wir nicht erstellt oder einem Wert zugewiesen haben.

  1. TypeError: Dies passiert, wenn eine Operation auf einem falschen Typ durchgeführt wird.
"2" + 2  # TypeError: kann nur str (nicht "int") zu str hinzufügen

In diesem Fall versuchen wir, einen String ("2") zu einem Integer (2) hinzuzufügen, was Python nicht weiß, wie es machen soll.

  1. ValueError: Dies wird geworfen, wenn eine Funktion ein Argument mit dem richtigen Typ, aber einem unangemessenen Wert erhält.
int("hello")  # ValueError: ungültiges Literal für int() mit Basis 10: 'hello'

Die int()-Funktion erwartet einen String, der eine Zahl repräsentiert, nicht ein Wort.

  1. ZeroDivisionError: Dies tritt auf, wenn du versuchst, durch Null zu teilen.
10 / 0  # ZeroDivisionError: division by zero

Genau wie in der Mathematik ist eine Division durch Null in der Programmierung nicht definiert.

Hierarchie der eingebauten Ausnahmen

Die eingebauten Ausnahmen in Python sind in einer Hierarchie organisiert, ähnlich wie eine Familienbaum. An der Spitze dieses Baums steht die BaseException-Klasse, von der alle anderen Ausnahmen abgeleitet sind.

Hier ist eine vereinfachte Version der Ausnahme-Hierarchie:

Ausnahme-Hierarchie
BaseException
├── SystemExit
├── KeyboardInterrupt
├── GeneratorExit
└── Exception
├── StopIteration
├── ArithmeticError
│ ├── FloatingPointError
│ ├── OverflowError
│ └── ZeroDivisionError
├── AssertionError
├── AttributeError
├── BufferError
├── EOFError
├── ImportError
│ └── ModuleNotFoundError
├── LookupError
│ ├── IndexError
│ └── KeyError
├── MemoryError
├── NameError
│ └── UnboundLocalError
├── OSError
│ ├── FileExistsError
│ ├── FileNotFoundError
│ ├── PermissionError
│ └── TimeoutError
├── ReferenceError
├── RuntimeError
│ └── NotImplementedError
├── SyntaxError
│ └── IndentationError
│ └── TabError
├── SystemError
├── TypeError
├── ValueError
│ └── UnicodeError
└── Warning

Diese Hierarchie zu verstehen, kann dir helfen, Ausnahmen effektiver in deinem Code zu fangen und zu behandeln.

Wie man eingebaute Ausnahmen verwendet

Jetzt, da wir wissen, was Ausnahmen sind, lernen wir, wie wir sie in unserem Code verwenden. Die Hauptmethode, um Ausnahmen zu behandeln, besteht darin, einen try-except-Block zu verwenden. Es ist wie eine Sicherheitsnetz, wenn man lernt, Rad zu fahren - wenn du fällst (eine Ausnahme auftritt), fängt das Netz (der except-Block) dich auf.

Hier ist eine grundlegende Struktur:

try:
# Code, der eine Ausnahme auslösen könnte
result = 10 / 0
except ZeroDivisionError:
# Code, um die spezifische Ausnahme zu behandeln
print("Hoppla! Du kannst nicht durch null teilen.")

In diesem Beispiel versuchen wir, durch null zu teilen, was wir wissen, wird eine ZeroDivisionError auslösen. Der except-Block fängt diesen spezifischen Fehler ab und gibt eine freundliche Meldung aus, anstatt das Programm zu crashen.

Du kannst auch mehrere Ausnahmen fangen:

try:
# Code, der verschiedene Ausnahmen auslösen könnte
number = int(input("Gib eine Zahl ein: "))
result = 10 / number
except ValueError:
print("Das ist keine gültige Zahl!")
except ZeroDivisionError:
print("Du kannst nicht durch null teilen!")
except:
print("Etwas anderes ist schiefgelaufen.")

Dieses Skript behandelt verschiedene Szenarien: Wenn der Benutzer eine nicht numerische Wert eingibt (ValueError), versucht, durch null zu teilen (ZeroDivisionError) oder wenn ein anderer unerwarteter Fehler auftritt.

Ausnahmen explizit auslösen

Manchmal möchtest du vielleicht selbst eine Ausnahme auslösen. Es ist wie ein Schiedsrichter in einem Spiel zu sein - wenn du etwas siehst, das nicht stimmt, pustst du in die Pfiffe und hältst das Spiel an.

So kannst du eine Ausnahme auslösen:

def überprüfe_alter(alter):
if alter < 0:
raise ValueError("Das Alter kann nicht negativ sein!")
elif alter < 18:
print("Du bist minderjährig.")
else:
print("Du bist volljährig.")

try:
überprüfe_alter(-5)
except ValueError as e:
print(e)

In diesem Beispiel erstellen wir eine Funktion, die das Alter einer Person überprüft. Wenn jemand versucht, ein negatives Alter einzugeben, werfen wir einen ValueError mit einer benutzerdefinierten Meldung. Der try-except-Block außerhalb der Funktion fängt diese Ausnahme ab und gibt die Fehlermeldung aus.

Denke daran, Ausnahmen sollten verantwortungsvoll verwendet werden. Es ist ein leistungsstarkes Werkzeug, aber das Übermaß verursacht, kann deinen Code schwerer zu verstehen und zu pflegen machen.

Zusammenfassend lässt sich sagen, dass das Verständnis und die effektive Verwendung der eingebauten Ausnahmen in Python entscheidend für das Schreiben robusten und fehlerresistenten Codes sind. Es ist wie das Lernen, wie man auf den Meeren navigiert - das Wissen über potenzielle Stürme (Ausnahmen) und wie man sie behandelt, wird deinen Programmierungsreise viel glatter und angenehmer machen.

Weiter üben, neugierig bleiben und keine Angst vor Ausnahmen haben - sie sind Gelegenheiten, zu lernen und deinen Code zu verbessern!

Credits: Image by storyset