Прихващане на различни типове изключения в 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 does not exist')
Задание 1

Даден е следният код:

pythontxt = '2'

res1 = txt + 3
res2 = txt1

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