Izņēmumu pārtveršana Python
Python, salīdzinot ar citām programmēšanas valodām, ir ļoti daudz situāciju, kas izraisa izņēmumus.
Apskatīsim tos sīkāk. Pieņemsim, ka mums ir saraksts:
lst = [1, 2, 3]
Pievērsīsimies neesošam saraksta elementam:
print(lts[4])
Pēc koda izpildes tiks parādīta kļūda (izņēmums):
IndexError: list index out of range
Ja tomēr mums ir nepieciešams turpināt darbu, neizvadot
izņēmumu, tas ir jānoķer ar
try-except konstrukciju. Tās
sintakse ir šāda:
try:
# kods, kas izraisa izņēmumu
except:
# kļūdas apstrāde
try blokā ir jāievieto kods,
kas var saturēt izņēmumu. Ja
pēkšņi šī koda izpildes laikā rodas
izņēmuma situācija, tad koda izpilde
neapstāsies, bet pāries uz koda bloku
except. Šajā blokā ir jānorāda
ziņojums, kas pēc iespējas precīzāk apraksta
radušās kļūdas būtību.
Ja, izpildot try bloku,
nekādas izņēmuma situācijas nenotika,
tad noderīgais kods vienkārši izpildīsies, bet kods
no except bloka - nē.
Ļaujiet noķert mūsu izņēmumu, piekļūstot
neesošam saraksta elementam. Lai to izdarītu,
try blokā ievietosim kodu ar
potenciālo kļūdu. Un except blokā
norādīsim konsolē izvadīt ziņojumu 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Pēc koda izpildes tiks izvadīts:
'error: elem is not exist'
Izpētījuši try-except konstrukciju,
jūsu rakstītā koda stils vajadzētu mainīties.
Tagad visas vietas, kurās var rasties
izņēmuma situācija, ir jāietver
try, un except blokā
jānorāda reakcija uz šo izņēmumu.
Jautājiet lietotājam divus skaitļus. Sadaliet vienu ar otru. Noķeriet izņēmuma situāciju, dalot ar nulli.
Jautājiet lietotājam skaitli. Atrodiet šī skaitļa kvadrātsakni. Noķeriet izņēmuma situāciju, izvelkot sakni no negatīva skaitļa.
Dots saraksts. Jautājiet lietotājam veselu skaitli. Iegūstiet saraksta elementu, kura numuru ievadīja lietotājs. Noķeriet izņēmuma situāciju, kas notiks, ja lietotājs ievadīja skaitli ārpus saraksta diapazona.
Dots šāds kods:
num = '5'
res = num + 2
print(res)
Kas nav kārtībā ar šo kodu? Izlabojiet tā trūkumus.
Dots šāds kods:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Kas nav kārtībā ar šo kodu? Izlabojiet tā trūkumus.