Junior
Welche Besonderheiten gibt es bei der Ausnahmebehandlung in Python?
sobes.tech KI
Antwort von AI
Ausnahmen in Python sind Ereignisse, die den normalen Ablauf der Programmausführung unterbrechen. Sie sind Objekte, die Fehler repräsentieren.
Eigenschaften:
- Hierarchie der Ausnahmen: Alle eingebauten Ausnahmen sind Klassen und sind in einer Hierarchie organisiert, die auf der Vererbung von der Basisklasse
BaseExceptionbasiert.# Beispiel für eine Hierarchie # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError try...except...-Blöcke: Hauptmechanismus zur Behandlung von Ausnahmen.try: # Code, der eine Ausnahme verursachen kann result = 10 / 0 except ZeroDivisionError: # Behandlung einer spezifischen Ausnahme print("Division durch Null!") except Exception as e: # Behandlung anderer Ausnahmen print(f"Ein Fehler ist aufgetreten: {e}")- Mehrere
except-Blöcke: Ermöglichen die unterschiedliche Behandlung verschiedener Ausnahmetypen.try: # Code value = int("abc") except ValueError: print("Ungültiges Zahlenformat.") except TypeError: print("Ungültiger Datentyp.") else-Block: Wird ausgeführt, wenn dertry-Block ohne Ausnahme endet.try: # Code result = 10 / 2 except ZeroDivisionError: print("Division durch Null!") else: print("Operation erfolgreich.")finally-Block: Wird immer ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht. Wird zum Freigeben von Ressourcen verwendet.file = None try: file = open("meineDatei.txt", "r") # Lesen aus der Datei except FileNotFoundError: print("Datei nicht gefunden.") finally: if file: file.close() # Garantiertes Schließen der Dateiraise-Operator: Wird verwendet, um explizit eine Ausnahme auszulösen.def divide(a, b): if b == 0: raise ZeroDivisionError("Division durch Null nicht erlaubt") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Fehler: {e}")- Benutzerdefinierte Ausnahmen: Man kann eigene Ausnahme-Klassen erstellen, indem man von
Exceptionoder einer anderen bestehenden Ausnahmeklasse erbt.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Daten sind leer") try: process_data([]) except CustomError as e: print(f"Fehler: {e}") - Behandlung von Ausnahmen mit dem Kontextmanager
with: Vereinfacht die Arbeit mit Ressourcen, die explizit geschlossen werden müssen (z.B. Dateien).try: with open("meineDatei.txt", "r") as file: # Arbeit mit der Datei content = file.read() except FileNotFoundError: print("Datei nicht gefunden.") # Die Datei wird automatisch beim Verlassen des `with`-Blocks geschlossen - Verkettung von Ausnahmen: Beim Behandeln einer Ausnahme kann man Informationen über die vorherige Ausnahme speichern (implizit oder mit
raise Exception from another_exception).
Diese Eigenschaften bieten einen flexiblen und leistungsstarken Mechanismus zur Fehlerbehandlung in Python, der es ermöglicht, robustere und fehlertolerantere Programme zu erstellen.