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 3: Finally: code die ALTIJD loopt

Na try/except nu de volgende stap: finally โ€” code die voert uit, of exception optreedt of niet.

Finally: opruimen ongeacht uitkomst

Tot nu toe zag je try/except: je vangt fouten af. Maar soms moet je iets doen โ€” ongeacht of fout optrad.

Het probleem: je wilt code uitvoeren die รณf exception รณf niet โ€” bijv. bestand sluiten, connectie verbreken.

# Zonder finally: je vergeet opruimen als fout optreedt
try:
    data = int(input_str)
    print(f"Succes: {data}")
except ValueError:
    print("Fout!")
# Maar logging MOET altijd gebeuren!

Oplossing: finally blok

try:
    data = int(input_str)
    print(f"Succes: {data}")
except ValueError:
    print("Fout!")
    data = 0
finally:
    print("--- Verwerking klaar ---")
    # Dit loopt ALTIJD, of except of niet

Flow: hoe loopt het?

TRY Code uitvoeren
OK โ†’ Exception? Nee
FINALLY Voert uit
OR
EXCEPTION โ†’ Exception? Ja
FINALLY Voert uit

Interactieve demo: twee paden, รฉรฉn finally

Kies scenario:

Vuistregel: finally voert ALTIJD uit, of exception of niet. Gebruik het voor opruimen: bestanden sluiten, verbindingen verbreken, logging.
>_ Probeer het voorbeeld

Experimenteer: zie hoe finally zich gedraagt in verschillende scenario's.

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

Opdracht: sensoren veilig afsluiten

Je meetscript leest sensordata uit. Of de conversie slaagt of niet, je wilt altijd loggen dat je klaar bent. Bestand: sensor_cleanup.py

  1. Maak een scenario waar je sensordata uitlazen probeert (bijv. stringwaarde naar float).
  2. Gebruik try/except om fouten af te vangen.
  3. Voeg finally toe: print altijd dat het systeem is opgeruimd.
  4. Test met zowel geldige als ongeldige data.
  5. Zorg dat finally voert uit op BEIDE paden (OK en exception).

Acceptatiecriteria

  • Try/except/finally structuur aanwezig.
  • Finally blok voert uit op beide paden (try OK en exception).
  • Finally print iets duidelijks (bijv. "Sensoren gesloten").
  • Script werkt met zowel geldige als ongeldige input.
  • Output toont duidelijk dat finally altijd voert.