Zachytávanie výnimiek v Python
V Pythone v porovnaní s inými programovacími jazykmi existuje veľmi veľa situácií, ktoré spôsobujú výnimky.
Poďme si ich podrobnejšie rozobrať. Majme zoznam:
lst = [1, 2, 3]
Prístup k neexistujúcemu prvku zoznamu:
print(lts[4])
Po vykonaní kódu sa zobrazí chyba (výnimka):
IndexError: list index out of range
Ak potrebujeme pokračovať v práci bez
zobrazenia výnimky, mali by sme ju zachytiť
pomocou konštrukcie try-except. Má
nasledujúcu syntax:
try:
# kód, ktorý spôsobuje výnimku
except:
# spracovanie chyby
V bloku try by mal byť umiestnený kód,
ktorý môže obsahovať výnimku. Ak
pri vykonávaní tohto kódu dôjde
k výnimočnej situácii, vykonávanie
kódu sa nezastaví, ale prejde do kódu bloku
except. V tomto bloku by sa mal
uviesť výpis správy, ktorý čo najpresnejšie
popisuje podstatu nastalej chyby.
Ak pri vykonávaní bloku try
nastane nejaká výnimočná situácia,
užitočný kód sa jednoducho vykoná a kód
z bloku except - nie.
Poďme zachytiť našu výnimku pri prístupe
k neexistujúcemu prvku zoznamu. Pre
toto v bloku try umiestnime kód s
potenciálnou chybou. A v bloku except
zadajme výpis do konzoly správy 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Po vykonaní kódu sa vypíše:
'error: elem is not exist'
Po preštudovaní konštrukcie try-except
by sa mal zmeniť štýl vášho napísaného kódu.
Teraz všetky miesta, kde môže nastať
výnimočná situácia, treba obaliť
do try a v bloku except
uviesť reakciu na túto výnimku.
Opýtajte sa používateľa na dve čísla. Vydeľte jedno druhým. Zachyťte výnimočnú situáciu delenia nulou.
Opýtajte sa používateľa na číslo. Nájdite druhú odmocninu z tohto čísla. Zachyťte výnimočnú situáciu odmocňovania záporného čísla.
Daný zoznam. Opýtajte sa používateľa na celé číslo. Získajte prvok zoznamu, ktorého index zadal používateľ. Zachyťte výnimočnú situáciu, ktorá nastane, ak používateľ zadal číslo mimo rozsahu zoznamu.
Daný nasledujúci kód:
num = '5'
res = num + 2
print(res)
Čo je nesprávne s týmto kódom? Opravte jeho nedostatky.
Daný nasledujúci kód:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Čo je nesprávne s týmto kódom? Opravte jeho nedostatky.