En Python, il est très facile d'effectuer des opérations telles que la division ou la manipulation de fichiers. Cependant, des erreurs peuvent survenir pendant l'exécution du programme, provoquant son arrêt brutal. C'est là qu'intervient la gestion des exceptions. Python utilise les blocs try et except pour gérer les exceptions. Les opérations susceptibles de déclencher des exceptions sont placées dans le bloc try, et le code pour gérer ces exceptions est placé dans le bloc except.
Considérons une simple opération de division :
a = int(input())
b = int(input())
print(a / b)
print('The program continues...')
Si on saisit 10 et 2, le programme affichera 5.0 suivi de The program continues.... Cependant, si nous entrons 10 et 0, le programme s'arrêtera et affichera un message d'erreur : ZeroDivisionError: division by zero.
Pour gérer cette erreur, nous pouvons utiliser la gestion des exceptions :
try: # Essayer d'exécuter les opérations dans ce bloc
a = int(input())
b = int(input())
print(a / b)
except ZeroDivisionError: # Que faire si une ZeroDivisionError se produit
print('Error: Division by zero is not allowed.')
print('The program continues...')
Maintenant, si nous exécutons le programme avec les entrées 10 et 0, il affichera Error: Division by zero is not allowed. puis The program continues....
De même, nous pouvons gérer d'autres exceptions comme ValueError, qui se produit lorsque l'entrée n'est pas un entier valide. Nous pouvons ajouter un autre bloc except pour gérer cette erreur :
try:
a = int(input())
b = int(input())
print(a / b)
except ZeroDivisionError:
print('Error: Division by zero is not allowed.')
except ValueError:
print('Error: Input is not a valid integer.')
Nous pouvons ajouter autant de blocs except que nécessaire pour gérer différents types d'exceptions. Ainsi, nous nous assurons que notre programme ne s'arrête pas brusquement à cause d'erreurs et qu'il peut fournir des messages utiles à l'utilisateur.
💡
Il est important de noter que l'ordre des blocs except compte.
Python exécutera le premier bloc except qui correspond au type d'erreur survenu. Si aucun des blocs except ne correspond, l'erreur ne sera pas gérée.
Vous pouvez également intercepter plusieurs exceptions en une seule ligne :
try:
a = int(input())
b = int(input())
print(a / b)
except (ZeroDivisionError, ValueError) as e:
print('Error:', e)
Ici, e contiendra l'instance de l'exception levée.
En utilisant la gestion des exceptions, nous pouvons rendre nos programmes Python plus robustes et conviviaux.
Challenge : Aire d'un rectangle
Vous devez écrire un programme qui lit deux nombres à virgule flottante depuis l'entrée, ces nombres h et w représentant la hauteur et la largeur d'un rectangle. Votre tâche est de calculer et d'afficher l'aire du rectangle.
Cependant, toutes les entrées ne sont pas garanties d'être des nombres valides. Si h ou w n'est pas un nombre, vous devez gérer l'exception et afficher The input is not a number.
La première ligne de l'entrée contient la hauteur h et la seconde ligne contient la largeur w.
Le programme doit afficher une seule ligne avec l'aire du rectangle si les entrées sont des nombres valides, ou The input is not a number si l'une ou les deux entrées ne sont pas des nombres valides.
Input
Output
5.2
7.8
40.56
3.7
abc
The input is not a number
abc
5.5
The input is not a number
abc
def
The input is not a number
Note : Les entrées contiendront uniquement des nombres positifs dans le cas où ce sont des nombres.