Sprint 4 Β· Datastructuren & foutafhandeling  Β·  US2: Exceptions

Als developer, wil ik fouten opvangen op de plek waar ze kunnen ontstaan, zodat mijn programma een duidelijke melding geeft in plaats van te crashen.

Taak 1: Pijn: type conversie crasht

int("vijftig") crasht met ValueError. Dit is het moment om exceptions te leren kennen β€” het antwoord op fouten.

Wat is een exception?

Tot nu toe crasht jouw code abrupt als iets fout gaat. Nu ga je leren exceptions af te vangen (proberen en voorkomen dat het crasht).

Een exception is een fout die Python opwerpt. De meest voorkomende:

# ValueError β€” fout type/waarde
int("vijftig")      # ValueError!

# KeyError β€” sleutel niet in dictionary
d = {"x": 10}
d["y"]            # KeyError!

# IndexError β€” index buiten bereik
lst = [1, 2, 3]
lst[10]             # IndexError!

De probleem: code stopt zonder controle

❌ Zonder afvangen

temp_str = "invalid"
temp = int(temp_str)
print(f"Temp: {temp}")
# ValueError!
# Script stopt.

βœ… MΓ©t afvangen (try/except)

try:
    temp = int(temp_str)
except ValueError:
    print("Ongeldig getal!")
    temp = 0
print(f"Temp: {temp}")

De oplossing: try/except

try:
    value = int("vijftig")  # Dit gaat fout
except ValueError:
    print("Fout: je invoer is geen getal!")
    value = 0

print(f"Waarde: {value}")  # Voert altijd uit

Interactieve demo: met en zonder try/except

Voer waarde in:

Vuistregel: Gebruik try/except als je weet dat iets fout kan gaan. De code loopt door in plaats van crash.
>_ Probeer het voorbeeld

Experimenteer: proef hoe exceptions werken en hoe try/except ze afvangt.

Klik op de knop om de uitvoer van het voorbeeld te zien.

Opdracht: sensor waarde afvangen

Je hebt een sensor die gegevens doorstuurt. Soms is de waarde ongeldig. Bestand: sensor_safe.py

  1. Maak een variabele sensor_reading met een string-waarde (bijv. "25.5", "invalid", of "-10").
  2. Probeer deze naar float() te converteren.
  3. Vang ValueError af. Bij fout: print een duidelijk bericht en zet een default-waarde.
  4. Print altijd de uiteindelijke waarde (of default).
  5. Zorg dat het script NIET crasht, ook met foute invoer.

Acceptatiecriteria

  • Script heet sensor_safe.py.
  • Gebruikt try/except ValueError.
  • Vat ValueError af en print een duidelijke foutmelding.
  • Zet een sensibele default (bijv. 0.0 of 20.0).
  • Script crasht nooit, ook niet met foute invoer.