Considérez l'exception python suivante: Je veux gérer cette exception particulière - c'est-à-dire, WindowsError avec le numéro d'erreur 267. Cependant, je ne peux pas simplement faire ce qui suit: p> < Pré> xxx pré> car cela ne fonctionnerait pas sur des systèmes UNIX où WindowError n'est même pas défini dans le module Exceptions. P> Y a-t-il un moyen élégant de gérer cette erreur? p> p>
3 Réponses :
Voici ma solution actuelle, mais je méprise légèrement en utilisant du code non trivial dans un bloc sauf le bloc:
Si vous avez besoin d'attraper une exception avec un nom qui pourrait ne pas toujours exister, puis la créez:
if not getattr(__builtins__, "WindowsError", None): class WindowsError(OSError): pass try: do() except WindowsError, e: print "error"
La réponse de Maynard de @glenn n'autorise pas le débogage avec la PDB car WindowsError intégré n'est pas disponible dans le débogueur. Ce bloc de code fonctionnera à l'intérieur du débogueur Python et lors de l'exécution normale:
try: from exceptions import WindowsError except ImportError: class WindowsError(OSError): pass
Soyez conseillé aux exceptions code> code> Python 2 mais pas python 3
cf. Bugs.python.org/issue6609