Gestion des erreurs en Python

Gestion des erreurs en Python

Dans cet article, nous expliquerons la gestion des erreurs en Python.

YouTube Video

Gestion des erreurs en Python

La gestion des erreurs en Python se fait principalement à l'aide des mots-clés try, except, else et finally. L'utilisation de ces structures vous permet de réagir de manière appropriée lorsqu'une erreur se produit dans votre programme. Ci-dessous, nous allons expliquer comment utiliser chacun d'entre eux.

Bloc try

Dans le bloc try, vous écrivez le code que vous souhaitez exécuter. Si une erreur se produit dans ce bloc, l'exécution du programme passe immédiatement au bloc except.

 1try:
 2    # Code that may raise an error (division by zero, for example)
 3    #number = int(input("Enter a number: "))
 4    number = int("abc")
 5    result = 10 / number
 6    print("Result:", result)
 7except ValueError as e:
 8    # Handle invalid input (e.g. non-numeric input)
 9    print("Invalid input. Please enter a whole number.")
10    print(f"Value error: {e}")
11except ZeroDivisionError as e:
12    # Handle division by zero error
13    print("Cannot divide by zero!")
14    print(f"Zero division error: {e}")
  • Ce code est un exemple de détection des erreurs dans un bloc try et de leur gestion appropriée en attrapant soit une ValueError soit une ZeroDivisionError.

Bloc except

Dans le bloc except, vous écrivez le code qui sera exécuté lorsqu'une exception spécifique (erreur) se produit. Vous pouvez également intercepter des exceptions spécifiques en fonction du type d'exception qui se produit.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = 0
 4    result = 10 / number
 5    print("Result:", result)
 6except ZeroDivisionError as e:
 7    print("Cannot divide by zero!")
 8    print(f"Zero division error: {e}")
 9except ValueError as e:
10    print("Input was not a valid integer.")
11    print(f"Value error: {e}")
  • Ce code montre comment exécuter un traitement différent pour chaque type d’exception dans le bloc except lorsqu’une erreur se produit dans le bloc try.

Gérer plusieurs exceptions ensemble

Spécifiez un tuple lorsque plusieurs classes d'exception peuvent partager la même logique de gestion.

1try:
2    my_list = [1, 2]
3    result = my_list[3] + 10 / 0
4except (IndexError, ZeroDivisionError) as e:
5    print(f"Exception occurred: {e}")
  • Ce code est un exemple où l’on intercepte à la fois les exceptions IndexError et ZeroDivisionError et on les traite de la même manière.

Intercepter les exceptions sans condition

Omettez l'argument pour except si vous souhaitez gérer tous les types d'exceptions dans un seul bloc.

1try:
2    # This code might cause some exception
3    result = "10" + 5  # TypeError
4except Exception as e:
5    print("Unexpected error")
  • Cependant, gérer des exceptions spécifiques plutôt que d’attraper inconditionnellement toutes les exceptions est plus utile pour trouver des bugs et pour le débogage. Dans la mesure du possible, gérer explicitement uniquement les exceptions prévues comme ValueError ou TypeError augmentera la robustesse de votre code.

Bloc else

Le bloc else est exécuté uniquement si aucune erreur ne se produit dans le bloc try.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = 5
 4    result = 10 / number
 5except ZeroDivisionError as e:
 6    print("Cannot divide by zero!")
 7    print(f"Zero division error: {e}")
 8except ValueError as e:
 9    print("Input was not a valid integer.")
10    print(f"Value error: {e}")
11else:
12    # This block will execute only if no exceptions were raised
13    print("Result:", result)
  • Ce code est un exemple où le bloc else est exécuté seulement si aucune erreur ne se produit dans le bloc try.

Bloc finally

Le bloc finally est utilisé pour écrire du code qui s'exécutera toujours à la fin, qu'une erreur se soit produite ou non dans le bloc try. Il est utile pour libérer des ressources ou effectuer des tâches de nettoyage.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = int("abc")
 4    result = 10 / number
 5except ZeroDivisionError as e:
 6    print("Cannot divide by zero!")
 7    print(f"Zero division error: {e}")
 8except ValueError as e:
 9    print("Input was not a valid integer.")
10    print(f"Value error: {e}")
11else:
12    # This block will execute only if no exceptions were raised
13    print("Result:", result)
14finally:
15    # This block will always execute, regardless of whether an exception was raised
16    print("Execution completed.")
  • Ce code démontre que le bloc finally est exécuté qu’une exception se produise ou non.

Le mot-clé raise

Il est également possible de lever une exception à l'aide du mot-clé raise lorsque certaines conditions dans le code existant ne sont pas remplies.

1def divide(a, b):
2    if b == 0:
3        raise ValueError("Cannot divide by zero.")
4    return a / b
5
6try:
7    result = divide(10, 0)
8except ValueError as e:
9    print(f"Error: {e}")
  • Ce code montre comment lever explicitement une exception avec le mot-clé raise lorsque qu’une condition n’est pas respectée.

Conclusion

En gérant les erreurs de cette manière, vous pouvez éviter les plantages du programme, afficher des messages appropriés à l'utilisateur et poursuivre le traitement ultérieur du programme.

Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.

YouTube Video