Išimčių perėmimas Python kalboje

Python kalboje, palyginus su kitomis programavimo kalbomis, yra labai daug situacijų, sukeliančių išimtis.

Pažvelkime į jas išsamiau. Tarkime, kad turime sąrašą:

pythonlst = [1, 2, 3]

Kreipkimės į neegzistuojantį sąrašo elementą:

pythonprint(lts[4])

Vykdant kodą, bus išvesta klaida (išimtis):

errorIndexError: list index out of range

Jei mums reikia tęsti darbą be išimties išvedimo, ją reikia pagauti naudojant try-except konstrukciją. Ji turi tokį sintaksę:

pythontry:
  # kodas, sukeliantis išimtį
except:
  # klaidos apdorojimas

try bloke reikėtų talpinti kodą, kuris gali turėti išimtį. Jei vykdant šį kodą atsirastų išimtinė situacija, tai kodo vykdymas nesustos, o pereis į except bloko kodą. Šiame bloke reikėtų aprašyti pranešimo išvedimą, kuo tiksliau apibūdinantį iškilusios klaidos esmę.

Jei vykdant try bloką jokių išimtinių situacijų neatsirado, tai naudingas kodas tiesiog bus vykdomas, o kodas iš except bloko - ne.

Pagaukime mūsų išimtį kreipiantis į neegzistuojantį sąrašo elementą. Tam try bloke patalpinkime kodą su potencialia klaida. O except bloke nurodykime pranešimo 'error: elem is not exist' išvedimą į konsolę:

pythonlst = [1, 2, 3]
try:
  print(lst[4])
except:
  print('error: elem is not exist')

Vykdant kodą, bus išvesta:

python'error: elem is not exist'

Išstudijavus try-except konstrukciją, jūsų parašyto kodo stilius turėtų pasikeisti. Dabar visas vietas, kuriose gali atsirasti išimtinė situacija, reikia apvynioti try, o except bloke aprašyti reakciją į šią išimtį.

Задание 1

Paklauskite vartotojo dviejų skaičių. Padalinkite vieną iš kito. Pagaukite išimtinę situaciją dalijimo iš nulio.

Задание 2

Paklauskite vartotojo skaičiaus. Raskite šio skaičiaus kvadratinę šaknį. Pagaukite išimtinę situaciją šaknies traukimo iš neigiamo skaičiaus.

Задание 3

Duotas sąrašas. Paklauskite vartotojo sveikojo skaičiaus. Gauti sąrašo elementą, kurio numerį įvedė vartotojas. Pagaukite išimtinę situaciją, kuri atsitiks, jei vartotojas įvedė skaičių už sąrašo diapazono ribų.

Задание 4

Duotas toks kodas:

pythonnum = '5'
res = num + 2

print(res)

Kas negerai su šiuo kodu? Ištaisykite jo trūkumus.

Задание 5

Duotas toks kodas:

pythonlst = [1, 2, 3, 4]

def getElem(iter):
  print(iter[4])

getElem(lst)

Kas negerai su šiuo kodu? Ištaisykite jo trūkumus.