try:
except:
Est il possible que je peux attraper toutes les exceptions? comment écrire un tel code? Merci! Je suis à l'aide de python 2.6.6
try:
except:
Est il possible que je peux attraper toutes les exceptions? comment écrire un tel code? Merci! Je suis à l'aide de python 2.6.6
En dehors d'une base except:
clause (qui, comme d'autres l'ont dit, vous ne devriez pas utiliser), vous pouvez simplement attraper Exception
:
try:
whatever()
except Exception as e:
# log the exception here
D'ordinaire, vous ne jamais envisager de faire cela à l'extérieur au niveau de votre code si par exemple vous vouliez gérer tout autrement les exceptions non traitées, avant de s'arrêter.
L'avantage de l' except Exception
sur la nue - except
il y a quelques exceptions près, que je ne peux l'attraper, plus évidemment KeyboardInterrupt
et SystemExit
: si vous avez attrapé et l'a avalé, alors vous pourrait rendre difficile pour quiconque de sortir de votre script.
Vous pouvez, mais vous ne devriez pas:
try:
do_something()
except:
print "Caught it!"
Cependant, ce sera aussi attraper les exceptions comme KeyboardInterrupt
et généralement vous ne voulez pas que, vous? À moins que vous re-lever l'exception tout de suite - voir l'exemple suivant de la documentation:
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
except ValueError:
print "Could not convert data to an integer."
except:
print "Unexpected error:", sys.exc_info()[0]
raise
Exemple très simple, semblable à celle que l'on trouve ici:
http://docs.python.org/tutorial/errors.html#defining-clean-up-actions
Si vous êtes à essayer d'attraper TOUTES les exceptions, puis mettre tout le code dans le "essayez:" l'instruction, à la place de " l'impression "de l'Exécution d'une action qui peut lever une exception."'.
essayez: print "l'Exécution d'une action qui peut lever une exception." sauf Exception, erreur: print "Une exception a été levée!" print str(erreur) autre chose: print "Tout ce qui ressemble beaucoup!" enfin: print", Enfin, est appelé directement après l'exécution de l'instruction try si une exception est levée ou non."
Dans l'exemple ci-dessus, vous pouvez voir la sortie dans cet ordre:
1) l'Exécution d'une action qui peut lever une exception.
2) Enfin, est appelé directement après l'exécution de l'instruction try si une exception est levée ou non.
3) "Une exception a été levée!" ou "Tout à l'air génial!" en fonction de si une exception a été levée.
Espérons que cette aide!
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.