Poignée spécifique type d'exception en python
J'ai un code qui gère une exception, et je veux faire quelque chose de spécifique que si elle est une exception, et seulement en mode de débogage. Ainsi, par exemple:
try:
stuff()
except Exception as e:
if _debug and e is KeyboardInterrupt:
sys.exit()
logging.exception("Normal handling")
En tant que tel, je ne veux pas simplement ajouter un:
except KeyboardInterrupt:
sys.exit()
parce que j'essaie de garder la différence dans ce déboguer le code minimal
de ce fait, avez-vous demander?
OriginalL'auteur Falmarri | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
Bien, vraiment, vous devriez probablement garder le gestionnaire de
KeyboardInterrupt
séparés. Pourquoi vous ne voulez gérer les interruptions de clavier en mode debug, mais l'avaler autrement?Cela dit, vous pouvez utiliser
isinstance
pour vérifier le type d'un objet:isinstance. c'est ce que je suis à la recherche pour. thx
OriginalL'auteur mipadi
C'est assez beaucoup la façon dont c'est fait.
Il y a un minimum de répétition. Pas de zéro, mais minime.
Si la "manipulation normale" est plus qu'une ligne de code, vous pouvez définir une fonction pour éviter la répétition des deux lignes de code.
C'est "sauf Exception, e:"
Une Exception, comme e est valide que dans la version 2.6 de Python+.
Bon, ne le savais pas, merci
OriginalL'auteur S.Lott
Vous devez laisser KeyboardInterrupt bulle tout le chemin jusqu'à l'emprisonner au plus haut niveau.
OriginalL'auteur Paulo Scardine
Quel est le problème avec
OriginalL'auteur Velociraptors
Vous pouvez nommer des exceptions spécifiques en Python:
OriginalL'auteur Crisfole
Soit utiliser la méthode standard mentionné dans les autres réponses, ou si vous voulez vraiment tester dans le bloc except ensuite, vous pouvez utiliser isinstance().
OriginalL'auteur marcog
Oui, 'else' branche sera exécuté lorsqu'il n'y a pas d'exception. C'est juste pour l'exemple. Mais vous avez raison, je devrais modifier le code exemple pour montrer la "vraie" programme d'etat.
OriginalL'auteur Lex