ПочатиПочніть безкоштовно

Перехоплення винятків

Перш ніж писати власні користувацькі винятки, переконаймося, що ви впевнено володієте основами обробки винятків.

У цій вправі вам надано функцію 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))
Редагувати та запускати код