Перехоплення винятків
Перш ніж писати власні користувацькі винятки, переконаймося, що ви впевнено володієте основами обробки винятків.
У цій вправі вам надано функцію invert_at_index(x, ind), яка приймає два аргументи: список x та індекс ind, і обертає елемент списку за цим індексом. Наприклад, invert_at_index([5,6,7], 0) повертає 1/5, тобто 0.2.
Ваше завдання — реалізувати обробку помилок і викидати користувацькі винятки залежно від типу помилки, що виникає.
Ця вправа є частиною курсу
Вступ до обʼєктно-орієнтованого програмування в Python
Інструкції до вправи
Використайте шаблон try - except - except (з двома блоками except) усередині функції, щоб перехоплювати й обробляти два винятки так:
tryвиконайте код як є, повернувши1/x[ind].- якщо стається
ZeroDivisionError, виведіть"Cannot divide by zero!", - якщо стається
IndexError, виведіть"Index out of range!"
Ви зрозумієте, що все зроблено правильно, якщо код виконується без помилок, а в консолі зʼявляється такий вивід:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Modify the function to catch exceptions
def invert_at_index(x, ind):
____:
return 1/x[ind]
_____:
print("____")
____:
print("____")
a_list = [5,6,0,7]
# Works okay
print(invert_at_index(a_list, 1))
# Potential ZeroDivisionError
print(invert_at_index(a_list, 2))
# Potential IndexError
print(invert_at_index(a_list, 5))