Fouten opvangen
Gebruik de pijlen om tussen de dia's te wisselen.
Tekst van deze dia
PROGRAMMEREN • 3E & 4E MIDDELBAAR
Fouten opvangen
Een sterk programma valt niet meteen om
LES 18 • LEVEL 18
Tekst van deze dia
STARTVRAAG
Stel je dit eens voor…
Een herkenbaar probleem, een slimme oplossing.
HET VERHAAL
Je vraagt een leeftijd. Iemand typt “dertien” in plaats van 13. Wat nu?
Kun je een foutmelding vervangen door een duidelijke uitleg?
Tekst van deze dia
ONZE MISSIE
Vandaag kan jij…
Drie doelen. Helemaal haalbaar, stap voor stap.
1
ValueError herkennen
2
try en except gebruiken
3
foute invoer vriendelijk afhandelen
EINDMISSIE • MAAK ZELF IETS!
Tekst van deze dia
NIEUW IDEE
try: probeer deze code
Eerst begrijpen wat de instructie betekent.
Met except ValueError vang je een verkeerde getalomzetting op.
ONTHOUD
try/except voorkomt hier een crash door verkeerde invoer.
Tekst van deze dia
LIVE CODEREN
Van idee naar werkende code
Lees mee. Voorspel samen de uitvoer en voer dan uit.
les18_voorbeeld_a.py
try:
leeftijd = int(input("Leeftijd? "))
print(leeftijd + 1)
except ValueError:
print("Typ een getal, aub.")
DENKVRAAG
try/except voorkomt hier een crash door verkeerde invoer.
Tekst van deze dia
RAAD DE UITVOER
Wat zal Python tonen?
Welke tekst verschijnt?
voorspel.py
try:
getal = int("hallo")
print("OK")
except ValueError:
print("Fout getal")
DENK → OVERLEG → ANTWOORD
Tekst van deze dia
OPLOSSING
En dit verschijnt op het scherm!
Vergelijk met je voorspelling.
uitvoer (geen Python-code)
Fout getal
WAAROM?
int("hallo") geeft een ValueError, dus gaat Python naar except.
Tekst van deze dia
LEVEL UP
Controleren is ook testen
Een extra Python-truc waarmee je meer kunt.
Probeer minstens een goed én een fout antwoord. Een stevig programma werkt in beide situaties.
TIP
Vang liever een specifieke fout op dan elke fout tegelijk.
Tekst van deze dia
ZO WERKT HET
Nog een codevoorbeeld
Lees de code. Wat verandert er ten opzichte van het vorige voorbeeld?
les18_voorbeeld_b.py
try:
prijs = float(input("Prijs? "))
print(f"Prijs: {prijs} euro")
except ValueError:
print("Gebruik bv. 3.50")
DE TRUC
Vang liever een specifieke fout op dan elke fout tegelijk.
Tekst van deze dia
JIJ PROBEERT
Mini-opdrachten
Werk rustig. Test telkens na een kleine wijziging.
1
Vraag een getal en vang foute invoer op.
2
Toon bij correcte invoer het dubbele.
3
Test de woorden “vijf” en het getal 5.
6–8 MINUTEN • EERST ZELF
Tekst van deze dia
DEBUGCHALLENGE
Python zegt: er is iets mis!
Speel detective: zoek de fout vóór je het programma uitvoert.
zoek_de_fout.py
try:
leeftijd = int(input("Leeftijd? "))
except NameError:
print("Geen geldig getal")
SPOTTED DE FOUT? • 90 SECONDEN
Tekst van deze dia
DEBUG-OPLOSSING
De verbeterde versie
Kleine correcties kunnen een groot verschil maken.
gecorrigeerd.py
try:
leeftijd = int(input("Leeftijd? "))
except ValueError:
print("Geen geldig getal")
WAT WAS FOUT?
Een verkeerde omrekening naar int veroorzaakt een ValueError, geen NameError.
Tekst van deze dia
EINDMISSIE
Veilige toegangspoort
Maak een leeftijdscontrole die vriendelijk reageert op foute invoer.
1
Vraag een leeftijd in een try-blok.
2
Zet de invoer om met int().
3
Toon toegang vanaf 12, anders geen toegang.
4
Vang ValueError op met een duidelijke boodschap.
EERST WERKEND → DAN MOOIER
Tekst van deze dia
VOORBEELD
Zo kan jouw oplossing eruitzien
Er bestaan meerdere correcte oplossingen. Vergelijk vooral de aanpak.
les18_oplossing.py
try:
leeftijd = int(input("Leeftijd? "))
if leeftijd >= 12:
print("Welkom!")
else:
print("Nog te jong")
except ValueError:
print("Voer cijfers in, aub.")
Tekst van deze dia
EXTRA CHALLENGE
Klaar? Level up!
Kies één extra uitdaging of help je klasgenoot met een tip.
BONUSOPDRACHT
Laat opnieuw proberen met een while-lus.
Het werkt — Test je programma met normale invoer.
Maak het sterker — Test ook eens een onverwacht antwoord.
Maak het eigen — Pas namen, teksten of vormgeving aan.
Tekst van deze dia
CHECK-OUT
Wat neem je mee?
Antwoord zonder spiekbriefje. Je hoeft niet alles al perfect te kunnen.
1
Welke fout ontstaat bij int("abc")?
2
Wat doet except ValueError?
3
Waarom moet je foute invoer testen?
VOLGENDE KEER Les 19: ontwerp je eigen quiz