Перехват разных типов исключений в Python
В одном и том же коде может понадобиться перехватить различные типы исключений.
Пусть нам нужно поймать исключение при делении на ноль. При такого рода ошибке выходит исключение:
ZeroDivisionError: division by zero
Чтобы его поймать, имя исключения следует
записать в блоке except
:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Также пусть у нас есть список:
lst = [1, 2, 3]
Если задать в блоке try
код с другой потенциальной ошибкой,
например, с выводом несуществующего
элемента, то исключение, не пойманное
в блоке except
, пройдет дальше
и выведется в консоль. Из-за чего
остановится работа кода:
lst = [1, 2, 3]
try:
print(lst[4]) # выведет IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Для решения такой ситуации, нужно указать в каждом блоке имя соответствующего типа исключений. Давайте добавим в наш код исключение по недостающему элементу:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Дан следующий код:
txt = '2'
res1 = txt + 3
res2 = txt1
Напишите код, чтобы перехватить
представленные в переменных res1
и res2
исключения.