Fånga undantag
Innan du börjar skriva egna anpassade undantag är det bra att ha grunderna för felhantering på plats.
I den här övningen får du en funktion invert_at_index(x, ind) som tar två argument – en lista x och ett index ind – och inverterar elementet i listan vid det indexet. Till exempel returnerar invert_at_index([5,6,7], 1) värdet 1/6, det vill säga 0.166666.
Kör koden som den är och undersök utdata i konsolen. Det finns två osäkra operationer i funktionen: om elementet som ska inverteras har värdet 0 uppstår ett ZeroDivisionError, och om det angivna indexet ligger utanför listans gränser uppstår ett IndexError. I båda fallen avbryts skriptet, vilket inte alltid är önskvärt.
Den här övningen är en del av kursen
Objektorienterad programmering i Python
Övningsinstruktioner
Använd ett try - except - except-mönster (med två except-block) inuti funktionen för att fånga och hantera två undantag enligt följande:
tryatt köra koden som den är,- om
ZeroDivisionErrorinträffar, skriv ut"Cannot divide by zero!", - om
IndexErrorinträffar, skriv ut"Index out of range!"
Du vet att det är rätt när koden körs utan fel och utdata i konsolen ser ut så här:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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))