1046 votes

Python: au sujet de la capture TOUTE exception

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

1238voto

Duncan Points 25356

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.

736voto

Tim Pietzcker Points 146308

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

119voto

vwvolodya Points 167

Vous pouvez le faire comme ceci pour gérer les exceptions générales

try:
    a = 2/0
except Exception, e:
    print e.__doc__
    print e.message

63voto

Joshua Burns Points 2800

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!

8voto

Yuval Adam Points 59423
try:
    whatever()
except:
    # this will catch any exception or error

Il est intéressant de mentionner que ce n'est pas la bonne Python de codage. Cela visera également de nombreuses erreurs que vous pourriez ne pas l'attraper.

Prograide.com

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.

Powered by:

X