J'ai un essai ... sauf bloquer dans mon code et quand une exception est levée. Je veux vraiment continuer avec le code car dans ce cas, tout est encore capable de fonctionner correctement. Le problème est que si vous laissez le bloc except: block vide ou avec un #do rien, cela vous donnera une erreur de syntaxe. Je ne peux pas utiliser continue car ce n'est pas dans une boucle. Existe-t-il un mot-clé que je peux utiliser qui indique au code de continuer?
except:
pass
Le "nop" standard dans Python est l'instruction pass
:
try:
do_something()
except Exception:
pass
En utilisant except Exception
au lieu d'un except
dépourvu, éviter de capturer des exceptions telles que SystemExit
, KeyboardInterrupt
etc.
Étant donné que la dernière exception levée a été mémorisée dans Python 2, certains objets impliqués dans la déclaration d'exception sont conservés en vie indéfiniment (en fait, jusqu'à la prochaine exception). Si cela est important pour vous et (généralement) que vous n'avez pas besoin de vous souvenir de la dernière exception levée, vous pouvez effectuer les opérations suivantes au lieu de pass
:
try:
do_something()
except Exception:
sys.exc_clear()
Ceci efface la dernière exception levée.
Dans Python 3, la variable qui contient l'instance de l'exception obtient supprimée à la sortie du bloc except
. Même si la variable contenait une valeur précédemment, après avoir entré et quitté le bloc except
, il redevient non défini.
Il y a une nouvelle façon de faire ça 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/406b47c6448
Et voici l'auteur, Raymond Hettinger, qui parle de cela et de toutes sortes d'autres Python hotness (passage pertinent à 43h30): http://www.youtube.com/watch?v = OSGv2VnC0go
Si vous souhaitez émuler le mot-clé nu except
et ignorer des éléments tels que KeyboardInterrupt
, bien que ce ne soit généralement pas le cas, vous pouvez utiliser with suppress(BaseException)
.
Edit: On dirait que ignored
a été renommé suppress
avant la version 3.4.
Essaye ça:
try:
blah()
except:
pass