Python: Comment ignorer une exception et procéder? [dupliquer]

cette question a déjà une réponse ici:

  • comment bien ignorer les exceptions 11 réponses

j'ai un essai...sauf block dans mon code et quand une exception est lancée. Vraiment, je veux juste continuer avec le code parce que dans ce cas, tout est toujours en mesure d'exécuter juste fin. Le problème est que si vous quittez le sauf: block vide ou avec un #do nothing, il vous donne une erreur de syntaxe. Je ne peux pas continuer car elle n'est pas dans une boucle. Y a-t-il un mot-clé que je peux utiliser qui dit au code de continuer?

267
demandé sur Rob 2009-02-22 14:02:22

4 réponses

except:
    pass
414
répondu Andy Hume 2009-02-22 11:03:55

la norme "nop" en Python est la déclaration pass :

try:
    do_something()
except Exception:
    pass

en raison de la dernière exception lancée étant rappelé en Python, certains des objets impliqués dans la déclaration de lancement d'exception sont maintenus en direct indéfiniment (en fait, jusqu'à la prochaine exception). Dans le cas où cela est important pour vous et (typiquement) vous n'avez pas besoin de vous rappeler la dernière exception lancée, vous pourriez vouloir faire ce qui suit au lieu de pass :

try:
    do_something()
except Exception:
    sys.exc_clear()

ceci efface la dernière exception lancée.

217
répondu tzot 2010-01-02 01:01:37

il y a une nouvelle façon de faire cela en Python 3.4:

from contextlib import suppress

with suppress(Exception):
  # your code

voici le commit qui l'a ajouté: http://hg.python.org/cpython/rev/406b47c64480

Et voici L'auteur, Raymond Hettinger, qui parle de ceci et de toutes sortes d'autres points chauds de Python (un peu pertinent à 43: 30): http://www.youtube.com/watch?v=OSGv2VnC0go

si vous voulez imiter le nu except mot-clé et aussi ignorer des choses comme KeyboardInterrupt - bien que vous ne le faites généralement pas-vous pouvez utiliser with suppress(BaseException) .

Edit: ressemble à ignored a été renommé en suppress avant la version 3.4.

124
répondu Jack O'Connor 2016-02-19 15:10:53

essayez ceci:

try:
    blah()
except:
    pass
13
répondu ryeguy 2009-02-22 11:04:33