Att fånga olika typer av undantag i Python

I samma kod kan det behövas fånga olika typer av undantag.

Låt oss säga att vi behöver fånga ett undantag vid division med noll. Vid denna typ av fel uppstår undantaget:

errorZeroDivisionError: division by zero

För att fånga det ska undantagets namn skrivas i except-blocket:

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

Låt oss också säga att vi har en lista:

pythonlst = [1, 2, 3]

Om man i try-blocket skriver kod med ett annat potentiellt fel, till exempel utskrift av ett icke-existerande element, så kommer undantaget, som inte fångas i except-blocket, att passera vidare och skrivas ut i konsolen. Vilket kommer att stoppa kodens exekvering:

pythonlst = [1, 2, 3]
try:
  print(lst[4]) # kommer att ge IndexError: list index out of range
except ZeroDivisionError:
  print('error: do not divide by zero')

För att lösa denna situation måste man ange i varje block namnet på motsvarande typ av undantag. Låt oss lägga till ett undantag för ett saknat element i vår kod:

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

Följande kod ges:

pythontxt = '2'

res1 = txt + 3
res2 = txt1

Skriv kod för att fånga de undantag som finns i variablerna res1 och res2.