Gestionarea excepțiilor
Înainte să începi să scrii propriile excepții personalizate, să ne asigurăm că stăpânești noțiunile de bază ale gestionării excepțiilor.
În acest exercițiu, ți se oferă o funcție invert_at_index(x, ind) care primește două argumente: o listă x și un index ind, și calculează inversul elementului din listă aflat la acel index. De exemplu, invert_at_index([5,6,7], 1) returnează 1/6, adică 0.166666.
Încearcă să rulezi codul așa cum este și examinează rezultatul din consolă. Există două operații nesigure în această funcție: în primul rând, dacă elementul pe care încercăm să-l inversăm are valoarea 0, codul va genera o excepție ZeroDivisionError. În al doilea rând, dacă indexul transmis funcției este în afara intervalului valid al listei, codul va genera o excepție IndexError. În ambele cazuri, scriptul va fi întrerupt, ceea ce poate fi nedorit.
Acest exercițiu face parte din cursul
Programare orientată pe obiecte în Python
Instrucțiuni pentru exercițiu
Folosește un șablon try - except - except (cu două blocuri except) în interiorul funcției pentru a intercepta și gestiona două excepții astfel:
try– execută codul așa cum este,- dacă apare
ZeroDivisionError, afișează"Cannot divide by zero!", - dacă apare
IndexError, afișează"Index out of range!"
Știi că ai rezolvat corect dacă codul rulează fără erori, iar rezultatul din consolă este:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))