Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Lever les Exceptions en Python : Déclenchement et Gestion des Erreurs | Gestion des Erreurs
Concepts Avancés de Python

bookLever les Exceptions en Python : Déclenchement et Gestion des Erreurs

Les exceptions en Python doivent être levées pour signaler qu'une condition d'erreur s'est produite, rendant impossible l'exécution de la tâche prévue par une fonction ou une méthode. Ceci est particulièrement utile dans les situations où le simple retour d'une valeur None ou similaire pourrait prêter à confusion et ne pas indiquer de manière adéquate qu'une erreur s'est produite.

Lever une exception standard

Pour lever une exception en Python, utilisez l'instruction raise. Voici un exemple simple :

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

Dans cet exemple, une ValueError est levée si le birth_year est supérieur à l'année en cours, indiquant que l'année de naissance fournie est invalide.

Création d'exceptions personnalisées

Bien que les exceptions intégrées de Python couvrent de nombreux scénarios, il peut parfois être nécessaire de définir vos propres exceptions afin d'exprimer clairement une condition d'erreur spécifique à votre domaine.

Définition d'exceptions personnalisées

Les exceptions personnalisées dérivent généralement de la classe Exception intégrée ou de l'une de ses sous-classes. Voici comment définir une exception personnalisée :

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

Remarque

Espoir que vous vous souvenez du concept d'héritage en 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 ; ils seront abordés dans le prochain chapitre.

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
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

bookLever les Exceptions en Python : Déclenchement et Gestion des Erreurs

Glissez pour afficher le menu

Les exceptions en Python doivent être levées pour signaler qu'une condition d'erreur s'est produite, rendant impossible l'exécution de la tâche prévue par une fonction ou une méthode. Ceci est particulièrement utile dans les situations où le simple retour d'une valeur None ou similaire pourrait prêter à confusion et ne pas indiquer de manière adéquate qu'une erreur s'est produite.

Lever une exception standard

Pour lever une exception en Python, utilisez l'instruction raise. Voici un exemple simple :

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

Dans cet exemple, une ValueError est levée si le birth_year est supérieur à l'année en cours, indiquant que l'année de naissance fournie est invalide.

Création d'exceptions personnalisées

Bien que les exceptions intégrées de Python couvrent de nombreux scénarios, il peut parfois être nécessaire de définir vos propres exceptions afin d'exprimer clairement une condition d'erreur spécifique à votre domaine.

Définition d'exceptions personnalisées

Les exceptions personnalisées dérivent généralement de la classe Exception intégrée ou de l'une de ses sous-classes. Voici comment définir une exception personnalisée :

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

Remarque

Espoir que vous vous souvenez du concept d'héritage en 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 ; ils seront abordés dans le prochain chapitre.

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
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
some-alt