Ich lese einige Quellcode, die eine Funktion ähnlich der folgenden enthält:Verwendung von „außer Exception“ vs. „außer ... raise“ in Python
def dummy_function():
try:
g = 1/0
except Exception as e:
raise Exception("There is an error: {}".format(e))
Wie ich es verstehe, alle Ausnahmen sind von der Exception Klasse abgeleitet, so sollte dies alle Fehler erfassen. Folgende https://docs.python.org/3/tutorial/errors.html, dann würde dies
def dummy_function():
try:
g = 1/0
except:
print "There is an error:"
raise
I
nicht gleichwertig sein bemerken, dass die gedruckte Ausgabe in jedem Fall etwas anders angeordnet ist, aber es scheint mir, dass das zweite Verfahren im Grunde genommen die gleichen sind und weniger ausführlich ist. Oder fehlt mir etwas?
Nein, sie sind nicht gleichwertig. Die neue 'Exception'-Instanz hat eine andere Nachricht angehängt. Das ist der springende Punkt beim Re-Raise, um die Botschaft zu ändern. –
Und eine Decke 'except:' fängt 'BaseException' ab und es sind auch Unterklassen, während' except Exception: 'nicht. –