Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Auslösen von Ausnahmen | Fehlerbehandlung
Python Fortgeschrittene Konzepte
course content

Kursinhalt

Python Fortgeschrittene Konzepte

Python Fortgeschrittene Konzepte

1. Module und Importe
2. Fehlerbehandlung
3. Dateiverwaltung
4. Pytest Framework
5. Unittest-Framework
6. Iteratoren und Generatoren

book
Auslösen von Ausnahmen

Dieses Kapitel behandelt, wie und wann Ausnahmen ausgelöst werden sollten und wie Sie benutzerdefinierte Ausnahmen erstellen können, um spezifische Situationen in Ihren Anwendungen eleganter zu handhaben.

Wie und wann Ausnahmen ausgelöst werden

Ausnahmen in Python sollten ausgelöst werden, um anzuzeigen, dass ein Fehlerzustand aufgetreten ist, der es einer Funktion oder Methode unmöglich macht, ihre beabsichtigte Aufgabe auszuführen. Dies ist besonders nützlich in Situationen, in denen das einfache Zurückgeben eines None oder eines ähnlichen Wertes mehrdeutig sein könnte und möglicherweise nicht ausreichend vermittelt, dass ein Fehler aufgetreten ist.

Eine Standardausnahme auslösen

Um eine Ausnahme in Python auszulösen, verwenden Sie die raise-Anweisung. Hier ist ein einfaches Beispiel:

123456789
def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year age = current_year - birth_year if age < 0: raise ValueError("The birth year cannot be in the future") return age calculate_age(2034)
copy

In diesem Beispiel wird ein ValueError ausgelöst, wenn das birth_year größer als das aktuelle Jahr ist, was darauf hinweist, dass das angegebene Geburtsjahr ungültig ist.

Erstellen benutzerdefinierter Ausnahmen

Während die eingebauten Ausnahmen von Python viele verschiedene Szenarien abdecken, müssen Sie manchmal Ihre eigenen Ausnahmen definieren, um einen Fehlerzustand auszudrücken, der spezifisch für Ihre Domäne ist.

Benutzerdefinierte Ausnahmen definieren

Benutzerdefinierte Ausnahmen werden typischerweise von der eingebauten Exception-Klasse oder einer ihrer Unterklassen abgeleitet. So können Sie eine benutzerdefinierte Ausnahme definieren:

1234567891011
class RegistrationError(Exception): """Base class for all registration-related exceptions.""" pass class UsernameTooShort(RegistrationError): """Raised when the username is too short.""" pass class PasswordTooWeak(RegistrationError): """Raised when the password is too weak.""" pass
copy

Hoffentlich erinnerst du dich an das Vererbungskonzept aus der OOP 😉

Hier ist ein praktisches Beispiel dafür, wie benutzerdefinierte Ausnahmen verwendet werden. Mach dir keine Sorgen über die else und as Schlüsselwörter im Beispiel; wir werden diese im nächsten Kapitel behandeln.

123456789101112131415161718192021222324252627282930
# Custom exceptions class RegistrationError(Exception): pass class UsernameTooShort(RegistrationError): pass class PasswordTooWeak(RegistrationError): pass # Functions to validate registration def validate_username(username): if len(username) < 6: raise UsernameTooShort("Username must be at least 6 characters long") def validate_password(password): if len(password) < 8: raise PasswordTooWeak("Password must be at least 8 characters long") def register_user(username, password): try: validate_username(username) validate_password(password) except RegistrationError as error: print(f"Registration failed: {error}") else: print("User registered successfully!") # Test the registration function register_user("john", "123") # This should fail
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
We're sorry to hear that something went wrong. What happened?
some-alt