try und except
Warum brauchen wir das?
zahl = int(input("Zahl: "))
Wenn jemand hallo tippt, entsteht ein ValueError – und das Programm stürzt oft ab.
In echten Programmen willst du:
- freundlich reagieren,
- nochmal fragen,
- oder einen sicheren Weg weitergehen.
Dafür gibt es try und except.
Definition: Ausnahme, try, except
Definition – Ausnahme (Exception):
Eine Ausnahme ist ein Fehler zur Laufzeit, den Python meldet,
wenn etwas Unerwartetes passiert (falscher Typ, Division durch 0, fehlende Datei, …).
Definition – try:
Imtry-Block steht Code, der scheitern könnte.
Definition – except:
Imexcept-Block steht, was passieren soll, wenn ein bestimmter Fehler auftritt.
try:
# riskanter Code
except ValueError:
# Reaktion auf genau diesen Fehlertyp
Alltagsbild
Du versuchst, eine Tür zu öffnen (try).
Wenn sie abgeschlossen ist (Fehler), nimmst du den Schlüssel (except)
statt hinzufallen.
Py: „try = versuch es. except = falls es schiefgeht.“
Buggy: „Ohne except mache ich Drama und beende alles.“
Erstes Beispiel
try:
zahl = int(input("Zahl: "))
print(f"Doppelt: {zahl * 2}")
except ValueError:
print("Das war keine ganze Zahl. Bitte Ziffern wie 7 oder 12.")
| Eingabe | Was passiert |
|---|---|
8 | Doppelt: 16 |
hi | freundliche Meldung, kein Absturz |
Was passiert im Computer?
- Python startet den
try-Block. - Läuft alles gut →
exceptwird übersprungen. - Tritt der genannte Fehler auf → springe in den passenden
except. - Danach kann das Programm weiterleben.
Welchen Fehler fangen?
Am Anfang: konkrete Fehlertypen nennen.
except ValueError:
...
Besser als nacktes except:, weil du sonst fast alles schluckst und Bugs versteckst.
try schützt nicht vor SyntaxError
# Das hier knallt schon beim Einlesen des Codes – try hilft nicht:
if True
print("x")
try/except sind für Laufzeitfehler, nicht für kaputte Schreibweise vor dem Start.
Neue Wörter
Laufzeitfehler, den man abfangen kann.
Block mit Code, der scheitern koennte.
Block fuer die Reaktion auf einen Fehler.
Probiere es selbst
Experiment 1
int-input mit try/except.
Experiment 2
Absichtlich abc tippen.
Experiment 3
Nach except noch print("weiter gehts").
Experiment 4
Gültige Zahl – except darf nicht laufen.
Fehlerdetektiv
try:
print(int("3"))
except:
print("irgendwas")
Hinweis
Besser konkret:
except ValueError:
print("Ungueltige Zahl")
Übungen
Level 1
try/except um int("12") und erkläre, warum kein except läuft.
Level 2
Alter einlesen abgesichert.
Lösung
try:
alter = int(input("Alter: "))
print(alter)
except ValueError:
print("Bitte eine ganze Zahl.")
Level 3
Zwei Zahlen addieren, beide Eingaben absichern (zwei try oder eine Hilfsfunktion später).
Mini-Challenge
Erkläre: Was ist der Unterschied zwischen SyntaxError und ValueError?
Wann hilft try?
Zusammenfassung
- Ausnahmen sind Laufzeitfehler.
tryprobiert,exceptreagiert.- Konkrete Fehlertypen nennen.
- Programm kann danach weiterlaufen.
- Syntaxfehler vor dem Start fängt try nicht.
Mini-Quiz
- Was ist eine Exception?
- Wann läuft except?
- Warum nicht nacktes except am Anfang?
Lösungen
- Laufzeitfehler.
- Wenn im try der passende Fehler auftritt.
- Es versteckt zu viele Fehlerarten.
try sitzt! Als Nächstes: Eingaben wiederholen, bis sie stimmen.