Cet article explore les différentes techniques utilisées pour gérer les exceptions en Python, notamment les blocs try-sauf, les exceptions personnalisées et les fonctionnalités avancées telles que le chaînage et l'enrichissement des exceptions.
Python fournit un cadre robuste de gestion des exceptions qui permet non seulement aux programmeurs d'implémenter du code qui évite les plantages, mais offre également des commentaires et maintient la stabilité des applications. De plus, il permet aux développeurs de gérer les erreurs de manière gracieuse à l'aide de constructions telles que des blocs try-sauf, des exceptions personnalisées, etc.
- Le bloc Try-Except
Dans le bloc try-sauf, le code qui peut déclencher une exception est placé dans le bloc try, et le bloc except spécifie les actions à entreprendre si une exception se produit (Python Software Foundation, s.d.).
Par exemple :
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
Pour intercepter plusieurs exceptions dans un bloc try-sauf, nous pouvons utiliser un bloc try avec plusieurs blocs except pour générer des réponses spécifiques pour chaque type d'exception. Ou bien, nous pouvons utiliser un tuple pour intercepter plusieurs exceptions avec une seule expression d'exception.
Par exemple :
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
- La clause Else
La clause else est placée après les blocs try-sauf et s'exécute si le bloc try ne déclenche pas d'exception.
Par exemple :
try: result = 1 / 2 except ZeroDivisionError: print(“Cannot divide by zero.”) else: print(“Division successful.”)
- La clause finale
La clause finale est toujours placée après le bloc try ou tout bloc except. Il contient du code qui s'exécute quoi qu'il arrive, généralement pour nettoyer des ressources telles que des fichiers ou des connexions réseau, même si une exception a été levée.
Par exemple :
try: result = 1 / ‘a’ except ZeroDivisionError: print(“Cannot divide by zero.”) except TypeError: print(“Type error occurred.”) else: print(“Division successful.”) finally: print(“Goodbye, world!”)
Lever des exceptions : la clause raise déclenche des exceptions en forçant une exception à se produire, généralement pour indiquer qu'une certaine condition n'a pas été remplie.
Par exemple :
if ‘a’ > 5: raise ValueError(“A must not exceed 5”)
- Chaînage d'exceptions
Vous pouvez enchaîner les exceptions avec la clause raise. Ceci est utile pour ajouter du contexte à une erreur originale.
Par exemple
try: open(‘myfile.txt’) except FileNotFoundError as e: raise RuntimeError(“Failed to open file”) from e
- Exceptions personnalisées
Vous pouvez définir vos propres classes d'exception en héritant de la classe Exception ou de toute autre classe d'exception intégrée (Mitchell, 2022).
Par exemple :
class My_custom_ (Exception): pass try: raise MyCustomError(“An error occurred”) except MyCustomError as e: print(e)
- Enrichir les exceptions
vous pouvez ajouter des informations ou du contexte à une exception en utilisant la méthode add_note() pour « ajouter » des messages ou des notes personnalisés à l'objet d'exception, alias e.
Par exemple :
def divide_numbers(a, b): try: result = a / b except ZeroDivisionError as e: e.add_note(“Cannot divide by zero”) e.add_note(“Please provide a non-zero divisor”) raise try: num1 = 10 num2 = 0 divide_numbers(num1, num2) except ZeroDivisionError as e: print(“An error occurred:”) print(str(e))
La gestion des exceptions est importante pour plusieurs raisons :
Un exemple simple de gestion des erreurs de programme :
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
Pour résumer, Python fournit un cadre complet de gestion des exceptions qui permet aux programmes de gérer des situations inattendues sans échouer brusquement. En utilisant des constructions telles que des blocs try-sauf, des exceptions personnalisées et des fonctionnalités avancées telles que le chaînage et l'enrichissement des exceptions, les développeurs peuvent garantir que leurs programmes sont résilients, conviviaux et capables de gérer des scénarios inattendus avec élégance.
Références :
Mitchell R (13 juin 2022). Exceptions personnalisées. _Formation essentielle Python _[VIDÉO]. Apprentissage LinkedIn. https://www.linkedin.com/learning/python-essential-training-14898805/custom-exceptions?autoSkip=true&resume=false&u=2245842
Fondation logicielle Python. (s.d.). 8. Erreurs et exceptions. Python. python.org.
Publié à l'origine dans Exception Handling in Python - Medium le 21 août 2024.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!