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

Contenu du cours

Concepts Avancés de Python

Concepts Avancés de Python

1. Modules et Imports
2. Gestion des Erreurs
3. Gestion des Fichiers
4. Cadre Pytest
5. Cadre Unittest
6. Itérateurs et Générateurs

book
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 :

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 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 :

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

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.

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
We're sorry to hear that something went wrong. What happened?
some-alt