Перехват разных типов исключений в Python

В одном и том же коде может понадобиться перехватить различные типы исключений.

Пусть нам нужно поймать исключение при делении на ноль. При такого рода ошибке выходит исключение:

errorZeroDivisionError: division by zero

Чтобы его поймать, имя исключения следует записать в блоке except:

pythontry:
  print(1 / 0)
except ZeroDivisionError:
  print('error: do not divide by zero')

Также пусть у нас есть список:

pythonlst = [1, 2, 3]

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

pythonlst = [1, 2, 3]
try:
  print(lst[4]) # выведет IndexError: list index out of range
except ZeroDivisionError:
  print('error: do not divide by zero')

Для решения такой ситуации, нужно указать в каждом блоке имя соответствующего типа исключений. Давайте добавим в наш код исключение по недостающему элементу:

pythontry:
  print(lst[4])
except ZeroDivisionError:
  print('error: do not divide by zero')
except IndexError:
  print('error: elem is not exist')
Задание 1

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

pythontxt = '2'

res1 = txt + 3
res2 = txt1

Напишите код, чтобы перехватить представленные в переменных res1 и res2 исключения.