Перехват исключений в 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)
Что не так с этим кодом? Исправьте его недостатки.