Contenu du cours
Concepts Avancés de Python
Concepts Avancés de Python
Lever des Exceptions
Ce chapitre explore comment et quand lever des exceptions, et comment vous pouvez créer des exceptions personnalisées pour gérer des situations spécifiques plus gracieusement dans vos applications.
Comment et Quand Lever des Exceptions
Les exceptions en Python doivent être levées pour signaler qu'une condition d'erreur s'est produite, rendant impossible pour une fonction ou une méthode d'accomplir sa tâche prévue. Cela est particulièrement utile dans les situations où simplement retourner un None
ou une valeur similaire pourrait être ambigu et ne pas transmettre adéquatement qu'une erreur s'est produite.
Lever une Exception Standard
Pour lever une exception en Python, vous utilisez l'instruction raise. Voici un exemple simple :
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)
Dans cet exemple, une ValueError est levée si le birth_year
est supérieur à l'année actuelle, indiquant que l'année de naissance fournie est invalide.
Créer des Exceptions Personnalisées
Bien que les exceptions intégrées de Python couvrent de nombreux scénarios différents, il peut parfois être nécessaire de définir vos propres exceptions pour exprimer clairement une condition d'erreur spécifique à votre domaine.
Définir des Exceptions Personnalisées
Les exceptions personnalisées sont généralement dérivées de la classe Exception intégrée ou de l'une de ses sous-classes. Voici comment vous pouvez définir une exception personnalisée :
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
J'espère que vous vous souvenez du concept d'héritage de la POO 😉
Voici un exemple pratique de l'utilisation des exceptions personnalisées. Ne vous inquiétez pas pour les mots-clés else
et as
dans l'exemple ; nous les aborderons dans le prochain chapitre.
# 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
Merci pour vos commentaires !