Einen Fehler auffangen
Unter try stehen die Zeilen, die stoppen könnten. except nennt den Stopp, den du abfängst. except ZeroDivisionError läuft nur, wenn der Stopp in try genau diesen Namen hat. Nach dem ganzen try und except geht das Programm weiter.
try:
print(1 / 0)
print("rice")
except ZeroDivisionError:
print("skip")
print("done")
Auf dem Bildschirm steht skip, dann done. print(1 / 0) stoppt in try. print("rice") ist noch in try, also läuft es nicht. Den Stopp zu fangen heißt nicht, den Rest von try doch noch zu Ende zu bringen. except schreibt skip. print("done") steht außen, also läuft es nach dem Fangen. Das Programm endet nicht an diesem Stopp.
Der Name muss passen. Setze print(tea) in dieses try und gib tea nie einen Wert: der Stopp ist NameError. except ZeroDivisionError fängt diesen Namen nicht. Das Programm stoppt trotzdem. skip wird nicht geschrieben, done auch nicht. Diese Zeile steht nicht im Programm auf dieser Seite.
Wenn jede Zeile in try zu Ende kommt, läuft except nicht. Das nächste Programm fängt neu an. Von der ersten Anzeige ist hier nichts mehr da.
try:
print(8 / 2)
except ZeroDivisionError:
print("skip")
print("done")
Auf dem Bildschirm steht 4.0, dann done. 4.0 ist vier, mit einem Dezimalpunkt. Es gab keinen Stopp, also wird skip nicht geschrieben. done läuft trotzdem, weil es außerhalb des Fangens steht.
Die Zeilen unter try und unter except sind eingerückt. Diese Einrückung setzt sie nach innen. print("done") ist unter except nicht eingerückt, also gehört es nicht zum Fangen. Es läuft, wenn try zu Ende kommt, und es läuft auch, wenn der genannte Stopp gefangen wird.
Auf der nächsten Seite löst du selbst einen Stopp aus. Diese Seite fängt nur einen Stopp, auf den eine Zeile schon trifft, und nur wenn der Name passt.
Was geschrieben wird, und was ausbleibt
- Was schreibt das erste Programm?
- Was passiert mit print("rice")?
- Was schreibt das zweite Programm?
- Was passiert, wenn print(tea) in try steht, tea nie einen Wert bekommen hat und except nur ZeroDivisionError nennt?
Der Name muss passen
Der erste Bildschirm ist skip, dann done. rice läuft nicht, weil es nach dem Stopp noch in try steht. Der zweite ist 4.0, dann done, und skip wird nicht geschrieben. NameError fängt except ZeroDivisionError nicht. done steht außen, also läuft es beim Fangen des genannten Stopps und wenn try zu Ende kommt. Die nächste Seite ist: selbst einen Stopp auslösen.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt