Kivételek elkapása Pythonban
A Pythonban más programozási nyelvekhez képest nagyon sok olyan helyzet van, amely kivételeket vált ki.
Nézzük meg ezeket részletesebben. Tegyük fel, hogy van egy listánk:
lst = [1, 2, 3]
Lépjünk rá egy nem létező listaelemre:
print(lts[4])
A kód végrehajtása után egy hiba (kivétel) jelenik meg:
IndexError: list index out of range
Ha azonban szeretnénk folytatni a munkát a kivétel kiírása nélkül, akkor el kell kapnunk azt a
try-except szerkezettel. Ennek szintaxisa a következő:
try:
# kivételt kiváltó kód
except:
# a hiba kezelése
A try blokkban azt a kódot kell elhelyezni,
amely kivételt tartalmazhat. Ha
véletlenül a kód végrehajtása során kivételes
helyzet lép fel, akkor a kód végrehajtása
nem áll le, hanem a except blokk
kódjába ugrik. Ebben a blokkban kell
megadni egy üzenetet, amely a lehető legpontosabban
írja le a felmerült hiba lényegét.
Ha viszont a try blokk végrehajtása során
egyetlen kivételes helyzet sem történt,
akkor a hasznos kód egyszerűen végrehajtódik, és a
except blokkból származó kód nem.
Kapjuk el a mi kivételünket, amikor egy nem létező
listaelemre hivatkozunk. Ehhez a
try blokkba helyezzük a potenciális hibát tartalmazó
kódot. Az except blokkban
pedig adjuk meg a 'error: elem is not exist'
üzenet kiírását a konzolra:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
A kód végrehajtása után a következő jelenik meg:
'error: elem is not exist'
A try-except szerkezet megismerése után
a megírt kód stílusának meg kell változnia.
Mostantól minden olyan helyet, ahol kivételes
helyzet léphet fel, be kell burkolni
a try blokkba, és az except blokkban
pedig meg kell határozni a reakciót erre a kivételre.
Kérjen a felhasználótól két számot. Ossza el az egyiket a másikkal. Kapja el a nullával való osztás kivételes helyzetét.
Kérjen a felhasználótól egy számot. Keresse meg a szám négyzetgyökét. Kapja el a negatív szám gyökvonásából adódó kivételes helyzetet.
Adott egy lista. Kérjen a felhasználótól egy egész számot. Szerezze meg a lista azon elemét, amelynek sorszámát a felhasználó megadta. Kapja el azt a kivételes helyzetet, amely akkor következik be, ha a felhasználó a lista tartományán kívüli számot adott meg.
Adott a következő kód:
num = '5'
res = num + 2
print(res)
Mi a baj ezzel a kóddal? Javítsa ki a hiányosságait.
Adott a következő kód:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Mi a baj ezzel a kóddal? Javítsa ki a hiányosságait.