Перехват исключений в 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)

Что не так с этим кодом? Исправьте его недостатки.