# Перехват исключений в Python

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

Давайте рассмотрим их подробнее. Пусть у нас есть список:

`lst = [1, 2, 3]`

Обратимся к несуществующему элементу списка:

`print(lts[4])`

После выполнения кода выведется ошибка (исключение):

`IndexError: list index out of range`

Если же нам нужно продолжить работу без вывода исключения, его следует поймать с помощью конструкции `try-except`. Она имеет следующий синтаксис:

`try: # код, вызывающий исключение except: # обработка ошибки`

В блоке `try` следует размещать код, который может содержать исключение. Если вдруг при выполнении этого кода возникнет исключительная ситуация, то выполнение кода не остановится, а перейдет в код блока `except`. В данном блоке следует прописать вывод сообщения, максимально точно описывающего суть возникшей ошибки.

Если же при выполнении блока `try` никаких исключительных ситуаций не случилось, то полезный код просто выполнится, а код из блока `except` - нет.

Давайте отловим наше исключение при обращении к несуществующему элементу списка. Для этого в блок `try` разместим код с потенциальной ошибкой. А в блоке `except` укажем вывод в консоль сообщения `'error: elem is not exist'`:

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

После выполнения кода выведется:

`'error: elem is not exist'`

После изучения конструкции `try-except` стиль написанного вами кода должен измениться. Теперь все места, в которых может возникнуть исключительная ситуация, нужно оборачивать в `try`, а в блоке `except` прописывать реакцию на это исключение.

Спросите у пользователя два числа. Поделите одно на другое. Поймайте исключительную ситуацию деления на ноль.

Спросите у пользователя число. Найдите квадратный корень из этого числа. Поймайте исключительную ситуацию извлечения корня из отрицательного числа.

Дан список. Спросите у пользователя целое число. Получите элемент списка, номер которого ввел пользователь. Поймайте исключительную ситуацию, которая случится, если пользователь ввел число вне диапазона списка.

Дан следующий код:

`num = '5' res = num + 2 print(res)`

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

Дан следующий код:

`lst = [1, 2, 3, 4] def getElem(iter): print(iter[4]) getElem(lst)`

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

← →
↑