Hvatanje izuzetaka u Pythonu
U Pythonu u poređenju sa drugim programskim jezicima postoji veoma mnogo situacija koje izazivaju izuzetke.
Hajde da ih detaljnije razmotrimo. Pretpostavimo da imamo listu:
lst = [1, 2, 3]
Pristupimo elementu liste koji ne postoji:
print(lst[4])
Nakon izvršavanja koda ispisaće se greška (izuzetak):
IndexError: list index out of range
Ako želimo da nastavimo rad bez
ispisivanja izuzetka, treba da ga uhvatimo
pomoću konstrukcije try-except. Ona
ima sledeću sintaksu:
try:
# kod koji može izazvati izuzetak
except:
# obrada greške
U bloku try treba smestiti kod
koji može sadržati izuzetak. Ako
prilikom izvršavanja tog koda dođe do
izuzetne situacije, izvršavanje
koda neće se zaustaviti, već će preći na kod bloka
except. U ovom bloku treba
napisati poruku koja što preciznije
opisuje suštinu nastale greške.
Ako prilikom izvršavanja bloka try
ne dođe do izuzetnih situacija,
onda će se korisni kod jednostavno izvršiti, a kod
iz bloka except - neće.
Hajde da uhvatimo naš izuzetak prilikom pristupa
ne postojećem elementu liste. Za
ovo ćemo u blok try smestiti kod sa
potencijalnom greškom. A u bloku except
ćemo naznačiti ispis u konzoli poruke 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Nakon izvršavanja koda ispisaće se:
'error: elem is not exist'
Nakon proučavanja konstrukcije try-except
stil koda koji pišete treba da se promeni.
Sada sva mesta na kojima može doći do
izuzetne situacije, treba da budu obavijena
u try, a u bloku except
treba napisati reakciju na taj izuzetak.
Pitajte korisnika za dva broja. Podelite jedan sa drugim. Uhvatite izuzetnu situaciju deljenja sa nulom.
Pitajte korisnika za broj. Pronađite kvadratni koren tog broja. Uhvatite izuzetnu situaciju vađenja korena iz negativnog broja.
Data je lista. Pitajte korisnika za ceo broj. Dohvatite element liste čiji je redni broj uneo korisnik. Uhvatite izuzetnu situaciju koja će se desiti ako je korisnik uneo broj van opsega liste.
Dat je sledeći kod:
num = '5'
res = num + 2
print(res)
Šta nije u redu sa ovim kodom? Ispravite njegove nedostatke.
Dat je sledeći kod:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Šta nije u redu sa ovim kodom? Ispravite njegove nedostatke.