Python Try-Except?
Welchen Grund gibt es, in Python ein ese Statement an einen Try-Except Block zu hängen anstatt die code Zeile die im else Part ausgeführt werden soll einfach ans Ende des Try Parts zu schreiben?
Also warum so:
try:
command1
except:
command2
else:
print("Kommando1 geglückt")
statt so:
try:
command1
print("Kommando1 geglückt")
except:
command2
2 Antworten
Naja, davon abgesehen, dass man evtl. dadurch den Code unter Umständen übersichtlicher gestalten kann...
Betrachte mal die folgenden Code-Schnipsel...
Beispiel 1:
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
try:
d = a/b
e = d/c
print(f"Ergebnis: {e}")
except ZeroDivisionError:
print("b ist 0 gewesen.")
Beispiel 2:
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
try:
d = a/b
except ZeroDivisionError:
print("b ist 0 gewesen.")
else:
e = d/c
print(f"Ergebnis: {e}")
Teste bei den beiden Beispielen beispielsweise mal a = 6 und b = 2 und c = 0. Was fällt dir als Unterschied auf?
Beachte: Das else kann/sollte man nutzen, wenn man den entsprechenden Code-Teil nicht durch das try-except mit schützen möchte. [Wie wenn man hier im Beispiel vielleicht nur eine mögliche Division durch b = 0 abfangen möchte, aber nicht eine mögliche Division durch c = 0 abfangen möchte.]
OK. Man wird hier im Beispiel wohl evtl. auch bei d/c eine Division durch 0 abfangen, aber mir ist spontan kein besseres Beispiel eingefallen. (Auch deshalb, weil ich selbst noch nie in die Situation gekommen bin, wo das tatsächlich einen Unterschied gemacht hätte.)
try:
some work
except:
Handle Error
else:
return somefunc()
Was passiert mit einer Exception die in somefunc() auftritt. Vergleiche das mal mit:
try:
some work
return somefunc()
except:
Handle Error