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:
ZeroDivisionError: division by zero
För att fånga det ska undantagets namn
skrivas i except-blocket:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Låt oss också säga att vi har en lista:
lst = [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:
lst = [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:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem does not exist')
Följande kod ges:
txt = '2'
res1 = txt + 3
res2 = txt1
Skriv kod för att fånga de undantag som finns
i variablerna res1 och res2.