Python

Errors: Debugging

Leerdoelen

  • Fouten en hoe ermee om te gaan

Syntax errors - wat zijn het?

  • We hebben al enkele fout-meldingen voorbij zien komen
  • Dit waren voornamelijk syntactische fouten - fouten in de syntax
    • Syntax: regels waaraan de code moet voldoen
    • Vergeten dubbele punt (:)
    • Typefouten in opdrachten

Syntax errors - wat te doen?

  • Python geeft meestal duidelijk aan waar de fout zit
  • File "/home/dennis/Boeken/Python/code/syntaxerror.py", line 1
        while True print('Hello world')
                   ^^^^^
    SyntaxError: invalid syntax
  • Het is onze eigen schuld ...
  • ... dus zelf oplossen

Runtime errors - wat zijn het?

  • Fouten tijdens het gebruik van de software
  • Kunnen ontstaan door verkeerde invoer
    • Een letter waar een getal wordt gevraagd
  • Doordat een programma op een waarde komt die niet voorzien was
    • Een List positie die niet bestaat
    • Delen door 0 omdat de deler 0 is geworden

Runtime errors - wat te doen?

  • Zijn vaak lastig te voorzien
  • Je moet elke mogelijke situatie afwegen
    • en daarop controlleren
  • Afvangen met try en except

Terminologie

  • Runtime errors noemen we exceptions
  • Een error is raised door de runtime engine (python)
  • Een exception kan worden afgevangen (catched)

Try / Except

while True:
    try:
        x = int(input("Geef een nummer op: "))
        break
    except ValueError:
        print("Dat was geen nummer.")

print(f"De ingevoerde waarde is: {x}")
  • while True - oneindige loop
  • try - de code die uitgevoerd moet worden
    • break - als er geen fouten zijn
  • except - afvangen van bekende exceptions

Welke exceptions zijn er?

Meerdere runtime tests

while True:
    try:
        x = int(input("Geef een nummer op: "))
        resultaat = 10 / x
        break
    except ValueError:
        print("Dat was geen nummer, probeer het nog een keer.")
    except ZeroDivisionError:
        print("Delen door nul is niet toegestaan.")

print("Resultaat is: ", resultaat)

Onbekende error afvangen

while True:
    try:
        x = int(input("Geef een nummer op: "))
        resultaat = 10 / x
        break
    except ValueError:
        print("Dat was geen nummer, probeer het nog een keer.")
    except ZeroDivisionError:
        print("Delen door nul is niet toegestaan.")
    except Exception as error:
        print("Er is iets fout gegaan. Het systeem meldde: ", error)

print("Resultaat is: ", resultaat)

Samenvatting

  • We hebben geleerd dat er 2 soorten errors zijn:
    • Syntax errors - type fouten
    • Runtime errors - fouten tijdens de werking
  • We kunnen met Try/Except runtime errors afvangen