Прихващане на изключения в Python

В Python в сравнение с други езици за програмиране има много ситуации, които причиняват изключения.

Нека ги разгледаме по-подробно. Да кажем, че имаме списък:

pythonlst = [1, 2, 3]

Нека се обърнем към несъществуващ елемент от списъка:

pythonprint(lts[4])

След изпълнение на кода ще се изведе грешка (изключение):

errorIndexError: list index out of range

Ако обаче трябва да продължим работа без да извеждаме изключението, то трябва да се улови с конструкцията try-except. Тя има следния синтаксис:

pythontry:
  # код, който причинява изключение
except:
  # обработка на грешката

В блока try трябва да се поставя код, който може да съдържа изключение. Ако внезапно при изпълнението на този код възникне изключителна ситуация, то изпълнението на кода няма да спре, а ще премине в кода на блока except. В този блок трябва да се пропише извеждане на съобщение, което възможно най-точно описва същността на възникналата грешка.

Ако при изпълнение на блока try не са възникнали изключителни ситуации, то полезният код просто ще се изпълни, а кодът от блока except - няма.

Нека уловим нашето изключение при достъп до несъществуващ елемент от списъка. За това в блока try ще поставим кода с потенциалната грешка. А в блока except ще посочим извеждане в конзолата на съобщението 'error: elem is not exist':

pythonlst = [1, 2, 3]
try:
  print(lst[4])
except:
  print('error: elem is not exist')

След изпълнение на кода ще се изведе:

python'error: elem is not exist'

След изучаването на конструкцията try-except стилът на написания от вас код трябва да се промени. Сега всички места, в които може да възникне изключителна ситуация, трябва да се обгръщат в try, а в блока except да се пропише реакцията на това изключение.

Задание 1

Попитайте потребителя за две числа. Разделете едното на другото. Уловете изключителната ситуация деление на нула.

Задание 2

Попитайте потребителя за число. Намерете квадратния корен от това число. Уловете изключителната ситуация извличане на корен от отрицателно число.

Задание 3

Даден е списък. Попитайте потребителя за цяло число. Вземете елемента от списъка, чийто номер е въвел потребителят. Уловете изключителната ситуация, която ще възникне, ако потребителят е въвел число извън диапазона на списъка.

Задание 4

Даден е следният код:

pythonnum = '5'
res = num + 2

print(res)

Какво не е наред с този код? Коригирайте недостатъците му.

Задание 5

Даден е следният код:

pythonlst = [1, 2, 3, 4]

def getElem(iter):
  print(iter[4])

getElem(lst)

Какво не е наред с този код? Коригирайте недостатъците му.