Comment gérer les exceptions imbriquées en python

Parfois vous avez besoin de placer une routine gestion des exceptions dans une autre dans un processus appelé nidification.

Sommaire

Lorsque vous nid routines gestion des exceptions, Python essaie de trouver un gestionnaire d'exception dans le niveau imbriqué d'abord, puis se déplace vers les couches extérieures. Vous pouvez routines nid de gestion des exceptions aussi profondément que nécessaire pour rendre votre code de sécurité.

Une des raisons les plus courantes d'utiliser une double couche de code de gestion d'exception est lorsque vous souhaitez obtenir des commentaires d'un utilisateur et devez placer le code d'entrée dans une boucle pour vous assurer que vous obtenez en fait les informations requises. Les étapes suivantes montrent comment cette sorte de code pourrait fonctionner.

1

Ouvrez une fenêtre Python Fichier.

Vous voyez un éditeur dans lequel vous pouvez taper le code d'exemple.

2

Tapez le code suivant dans la fenêtre - en appuyant sur ENTRÉE après chaque ligne:

TryAgain = Truewhile TryAgain: try: Valeur = int (entrée ("Tapez un nombre entier.")) À l'exception ValueError: ("Vous devez taper un nombre entier") print essayer: Doover = entrée ("Essayez de nouveau (y / n )? "), sauf: print (" OK, vous voir la prochaine fois ") TryAgain = Falseelse: si (str.upper (Doover) =="! N "): TryAgain = Falseexcept KeyboardInterrupt: print (" Vous avez appuyé sur les touches Ctrl + C ! ") print (" Rendez-vous la prochaine fois ") TryAgain = Falseelse: impression (Value) TryAgain = False

Le code commence par la création d'une boucle d'entrée. Utilisation des boucles pour ce type de but est en fait assez courant dans les applications parce que vous ne voulez pas l'application de mettre fin à chaque fois une erreur de saisie est faite. Ceci est une boucle simplifiée, et, normalement, vous créez une fonction distincte de tenir le code.




Lorsque la boucle démarre, l'application demande à l'utilisateur de taper un nombre entier. Il peut être n'importe quel nombre entier. Si l'utilisateur tape toute valeur non entier ou appuie sur Ctrl + C, Cmd + C, ou une autre interruption combinaison de touches, le code de gestion des exceptions prend le relais. Sinon, l'application affiche la valeur que l'utilisateur a fourni et jeux Essaye encore à Faux, ce qui provoque la boucle à la fin.

UN ValueError exception peut se produire lorsque l'utilisateur fait une erreur. Parce que vous ne savez pas pourquoi l'utilisateur d'entrée la valeur erronée, vous devez vous demander si l'utilisateur veut essayer à nouveau. Bien sûr, obtenir plus d'entrée de l'utilisateur pourrait générer une autre exception. L'intérieure essayer # 133- exception bloc de code gère cette entrée secondaire.

Notez l'utilisation de la str.upper () fonctionner lors de l'obtention saisie de caractères de l'utilisateur. Cette fonction permet de recevoir y ou Y comme entrée et accepter les deux. Chaque fois que vous demandez à l'utilisateur pour la saisie de caractères, il est une bonne idée de convertir les caractères minuscules en majuscules de sorte que vous pouvez effectuer une comparaison unique (réduisant le risque d'erreur).

La KeyboardInterrupt exception affiche deux messages, puis sort automatiquement en réglant Essaye encore à Faux. La KeyboardInterrupt se produit uniquement lorsque l'utilisateur appuie sur une combinaison de touches spécifique visant à mettre fin à l'application. L'utilisateur est peu probable de vouloir continuer à utiliser l'application à ce point.

3

Choisissez Module Run-Run.

Vous voyez une fenêtre ouverte Python. L'application demande à l'utilisateur de saisir un nombre entier.

4

Tapez Bonjour et appuyez sur Entrée.

L'application affiche un message d'erreur et vous demande si vous voulez essayer à nouveau.

Comment gérer les exceptions imbriquées en python
Comment gérer les exceptions imbriquées en python Agrandir
5

Tapez Y et appuyez sur Entrée.

L'application vous demande d'entrer un nombre entier à nouveau.

6

Tapez 5,5 et appuyez sur Entrée.

L'application affiche à nouveau le message d'erreur et vous demande si vous voulez essayer à nouveau.

7

Appuyez sur Ctrl + C, Cmd + C, ou une autre combinaison de touches pour interrompre l'application.

L'application se termine. Notez que le message est celui de l'exception interne. L'application ne fait jamais à l'exception externe parce que le gestionnaire d'exception interne fournit la gestion des exceptions générique.

Comment gérer les exceptions imbriquées en python
Comment gérer les exceptions imbriquées en python Agrandir
8

Choisissez Module Run-Run.

Vous voyez une fenêtre ouverte Python. L'application demande à l'utilisateur de saisir un nombre entier.

Comment gérer les exceptions imbriquées en python
Comment gérer les exceptions imbriquées en python Agrandir
9

Appuyez sur Ctrl + C, Cmd + C, ou une autre combinaison de touches pour interrompre l'application.

L'application se termine. Notez que le message est l'un de l'exception extérieure. Dans les étapes preious, l'utilisateur se termine l'application en appuyant sur une touche d'interruption. Cependant, l'application utilise deux gestionnaires d'exception différents pour résoudre le problème.


» » » » Comment gérer les exceptions imbriquées en python