Excepties afvangen
Voordat je je eigen custom exceptions gaat schrijven, zorgen we er eerst voor dat je de basis van het afhandelen van excepties onder de knie hebt.
In deze oefening krijg je een functie invert_at_index(x, ind) die twee argumenten accepteert: een lijst x en een index ind. De functie neemt het element op die index en keert het om. Bijvoorbeeld, invert_at_index([5,6,7], 1) geeft 1/6, oftewel 0.166666.
Probeer de code eerst gewoon uit te voeren en bekijk de output in de console. Er zitten twee onveilige operaties in deze functie: ten eerste, als het element dat we proberen om te keren de waarde 0 heeft, veroorzaakt de code een ZeroDivisionError-exceptie. Ten tweede, als de doorgegeven index buiten het bereik van de lijst valt, veroorzaakt de code een IndexError. In beide gevallen wordt het script onderbroken, en dat is misschien niet wenselijk.
Deze oefening maakt deel uit van de cursus
Objectgeoriënteerd programmeren in Python
Oefeninstructies
Gebruik binnen de functie een try - except - except-patroon (met twee except-blokken) om twee excepties als volgt af te vangen en af te handelen:
tryde code uit te voeren zoals die is,- als
ZeroDivisionErroroptreedt, print"Cannot divide by zero!", - als
IndexErroroptreedt, print"Index out of range!"
Je weet dat het goed is als de code zonder fouten draait en de output in de console is:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
return 1/x[ind]
a = [5,6,0,7]
# Works okay
print(invert_at_index(a, 1))
# Potential ZeroDivisionError
print(invert_at_index(a, 2))
# Potential IndexError
print(invert_at_index(a, 5))