Kom igångKom igång gratis

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

Visa kurs

Ö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:

  • try att köra koden som den är,
  • om ZeroDivisionError inträffar, skriv ut "Cannot divide by zero!",
  • om IndexError inträ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))
Redigera och kör kod