Auslösen von Ausnahmen in Python: Fehler Auslösen und Verwalten
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 von None oder einem ähnlichen Wert mehrdeutig sein könnte und möglicherweise nicht ausreichend vermittelt, dass ein Fehler aufgetreten ist.
Auslösen einer Standardausnahme
Um in Python eine Ausnahme auszulösen, wird die raise-Anweisung verwendet. Hier ein einfaches Beispiel:
123456789def 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)
In diesem Beispiel wird eine ValueError ausgelöst, wenn birth_year größer als das aktuelle Jahr ist, was darauf hinweist, dass das angegebene Geburtsjahr ungültig ist.
Eigene Ausnahmen erstellen
Obwohl die eingebauten Ausnahmen von Python viele verschiedene Szenarien abdecken, kann es manchmal notwendig sein, eigene Ausnahmen zu definieren, um einen für den eigenen Anwendungsbereich spezifischen Fehlerzustand klar auszudrücken.
Eigene Ausnahmen definieren
Eigene Ausnahmen werden typischerweise von der eingebauten Exception-Klasse oder einer ihrer Unterklassen abgeleitet. So kann eine eigene Ausnahme definiert werden:
1234567891011class 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
Hinweis
Erinnern Sie sich an das Vererbungskonzept aus der objektorientierten Programmierung 😉
Hier ist ein praxisnahes Beispiel für die Verwendung benutzerdefinierter Ausnahmen. Machen Sie sich keine Sorgen um die Schlüsselwörter else und as im Beispiel; diese werden wir 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
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 3.13
Auslösen von Ausnahmen in Python: Fehler Auslösen und Verwalten
Swipe um das Menü anzuzeigen
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 von None oder einem ähnlichen Wert mehrdeutig sein könnte und möglicherweise nicht ausreichend vermittelt, dass ein Fehler aufgetreten ist.
Auslösen einer Standardausnahme
Um in Python eine Ausnahme auszulösen, wird die raise-Anweisung verwendet. Hier ein einfaches Beispiel:
123456789def 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)
In diesem Beispiel wird eine ValueError ausgelöst, wenn birth_year größer als das aktuelle Jahr ist, was darauf hinweist, dass das angegebene Geburtsjahr ungültig ist.
Eigene Ausnahmen erstellen
Obwohl die eingebauten Ausnahmen von Python viele verschiedene Szenarien abdecken, kann es manchmal notwendig sein, eigene Ausnahmen zu definieren, um einen für den eigenen Anwendungsbereich spezifischen Fehlerzustand klar auszudrücken.
Eigene Ausnahmen definieren
Eigene Ausnahmen werden typischerweise von der eingebauten Exception-Klasse oder einer ihrer Unterklassen abgeleitet. So kann eine eigene Ausnahme definiert werden:
1234567891011class 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
Hinweis
Erinnern Sie sich an das Vererbungskonzept aus der objektorientierten Programmierung 😉
Hier ist ein praxisnahes Beispiel für die Verwendung benutzerdefinierter Ausnahmen. Machen Sie sich keine Sorgen um die Schlüsselwörter else und as im Beispiel; diese werden wir 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
Danke für Ihr Feedback!