Különböző típusú kivételek elkapása Pythonban
Ugyanabban a kódban szükség lehet különböző típusú kivételek elkapására.
Tegyük fel, hogy el kell kapnunk a nullával való osztás kivételét. Ilyen típusú hiba esetén a következő kivétel keletkezik:
ZeroDivisionError: division by zero
Ahhoz, hogy ezt elkaphassuk, a kivétel nevét
a except blokkban kell megadni:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Tegyük fel, hogy van egy listánk:
lst = [1, 2, 3]
Ha a try blokkban olyan kódot helyezünk el,
amelyben más potenciális hiba is előfordulhat,
például egy nem létező elem kiíratása, akkor
az a kivétel, amelyet az except blokk
nem kap el, tovább terjed és a konzolra íródik ki.
Emiatt a kód működése leáll:
lst = [1, 2, 3]
try:
print(lst[4]) # kiírja: IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Ennek a helyzetnek a megoldásához meg kell adni minden blokkban a megfelelő típusú kivételek nevét. Adjuk hozzá a kódunkhoz a hiányzó elem utáni kivételt:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Adott a következő kód:
txt = '2'
res1 = txt + 3
res2 = txt1
Írj kódot, hogy elkaphasd a res1 és res2
változókban megjelenő kivételeket.