Python - Gestion avancée des exceptions

Table des matières
Une fois qu'une exception est levée, il est de notre devoir de pouvoir la gérer, de cette manière notre programme pourra exécuter une action, lever un message, demander la correction du paramètre saisi par l'utilisateur, bref, de nombreuses possibilités .
Attraper des exceptions
Comme nous l'avons mentionné précédemment, l'important lorsque nous voyons une exception est de pouvoir l'attraper de cette manière, nous pouvons décider ce que le programme doit faire une fois que cette situation se produit, pour ce faire, nous utiliserons les commandes essayer / sauf. Pour démontrer ce qui précède, nous allons analyser un programme de division très simple, car nous savons que nous ne pouvons pas diviser un nombre par 0, ce qui déclenchera une exception.
Commençons à construire notre code, rappelez-vous que nous pouvons le faire dans n'importe quel éditeur de texte et que nous devons enregistrer le fichier avec une extension .py afin de pouvoir l'exécuter sur notre ligne de commande ou notre console.
 x = entrée ('Entrez le premier nombre :') y = entrée ('Entrez le deuxième nombre :') print x / y [/ taille] [taille = 4]

Cela fonctionnera correctement jusqu'à ce que l'utilisateur entre la valeur 0 comme deuxième argument, cela lèvera une exception comme nous pouvons le voir dans l'image suivante de l'exécution de ce programme :

Nous pouvons éviter cela en utilisant le essayer / sauf que nous avions vu au début de cette section, voyons notre code corrigé :
 try: x = input ('Entrez le premier nombre :') y = input ('Entrez le deuxième nombre :') print x / y except ZeroDivisionerror : print "Le deuxième nombre ne peut pas être zéro!" 

Cette façon de traiter cette affaire est assez propre, malgré tout on peut dire aussi qu'avec un simple si qui conditionnerait que la valeur de Oui Ce ne serait pas 0, ce serait une solution adéquate, mais si nous ajoutions plus de divisions à notre programme, nous aurions besoin de plus de conditions, au lieu de cela, nous n'avons besoin que d'un seul gestionnaire de l'exception possible qui est générée.
Attraper plus d'une exception
En continuant avec l'exemple de la division sur laquelle nous avons travaillé, voyons ce qui se passerait si au lieu d'un 0 nous entrions autre chose :

Dans l'image, nous pouvons voir qu'un texte a été saisi et notre gestionnaire qui n'attendait qu'une exception du type ZeroDivisionerror ne pouvait pas gérer correctement car il ne savait pas quoi faire avec la nouvelle exception générée.
Pour attraper la nouvelle exception, nous allons simplement ajouter un nouveau bloc à l'exception pouvoir gérer l'exception Erreur-type qui est généré en divisant un nombre par un texte.
Voyons notre code corrigé :
 try: x = input ('Entrez le premier nombre :') y = input ('Entrez le deuxième nombre :') print x / y except ZeroDivisionerror : print "Le deuxième nombre ne peut pas être zéro!" sauf TypeError : print "Ce n'était pas un nombre, n'est-ce pas ?" 

Si nous avions choisi d'utiliser des conditions si, cette tâche nous aurait pris beaucoup plus de lignes de code, en plus de rendre notre programme moins lisible.
Attraper deux exceptions dans le même bloc
Si ce dont nous avons besoin est d'attraper plusieurs exceptions dans un seul bloc à l'exception ce que nous devons faire est de les ajouter dans la déclaration à l'intérieur d'une parenthèse, voyons le code pour mieux le comprendre :
[/ size] try : x = input ('Entrez le premier nombre :') y = input ('Entrez le deuxième nombre :') print x / y except ZeroDivisionerror : print "Le deuxième nombre ne peut pas être zéro!" sauf TypeError : [/ size] [size = 4] print "Ce n'était pas un nombre, n'est-ce pas ?" 

Comme nous avons pu le voir, quoi qu'il arrive, l'application continuera à nous envoyer le même message si un 0 est entré ou autre chose qu'un nombre est entré.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave