2014-11-27 3 views
5

In Python 2 sind alle Ausnahmen, die raise d erforderlich sind, erforderlich, um von Exception zu erben?Versucht `try ... außer Exception as e 'jede mögliche Ausnahme?

Das heißt, ist die folgende ausreicht, um eine mögliche Ausnahme zu fangen:

try: 
    code() 
except Exception as e: 
    pass 

oder muss ich etwas noch allgemeinere wie

try: 
    code() 
except: 
    pass 
+1

Nein. Aber es sei denn, Sie wollen Dinge nicht erledigen. –

+1

@ IgnacioVazquez-Abrams Was ist, wenn ich mein Programm fortsetzen muss, egal was in 'code()' passiert? – jaynp

+1

Dann verwenden Sie die falsche Plattform. –

Antwort

6

Bei der ersten Variante, die Sie „alle fangen werden integrierte, nicht systemauslösende Ausnahmen "(https://docs.python.org/2/library/exceptions.html) und sollte benutzerdefinierte Ausnahmen abfangen (" alle benutzerdefinierten Ausnahmen sollten auch von dieser Klasse abgeleitet sein ").

Zum Beispiel, die erste Variante wird nicht vom Benutzer gedrückte Control-C (KeyboardInterrupt) fangen, aber die zweite wird.

+0

Also ist es sicher zu sagen, dass der zweite alles fängt? – jaynp

+0

@jpp, yes - "Eine ausdrucklose except-Klausel, falls vorhanden, muss die letzte sein; sie entspricht einer beliebigen Ausnahme." https://docs.python.org/2/reference/compound_stmts.html#except –