Erinevat tüüpi erandite püüdmine Pythonis
Samas koodis võib olla vaja püüda erinevaid tüüpi erandeid.
Oletame, et peame püüdma erandi nulliga jagamisel. Sellise vea puhul tekib erand:
ZeroDivisionError: division by zero
Selle püüdmiseks tuleb erandi nimi
kirjutada except plokki:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Olgu meil ka järjest:
lst = [1, 2, 3]
Kui panna try plokki kood teise
potentsiaalse veaga, näiteks olematu
elemendi väljatrükiga, siis erand,
mida ei püütud except plokis, läheb
edasi ja prinditakse konsooli. Mistõttu
peatub koodi töö:
lst = [1, 2, 3]
try:
print(lst[4]) # väljastab IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Sellise olukorra lahendamiseks tuleb igasse plokki panna vastav eranditüübi nimi. Lisame oma koodile erandi puuduva elemendi kohta:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Antud on järgmine kood:
txt = '2'
res1 = txt + 3
res2 = txt1
Kirjutage kood, et püüda esitatud
muutujates res1 ja res2
toimuvad erandid.