Interceptarea excepțiilor în Python
În Python, în comparație cu alte limbaje de programare, există foarte multe situații care generează excepții.
Să le analizăm mai detaliat. Să presupunem că avem o listă:
lst = [1, 2, 3]
Să accesăm un element inexistent al listei:
print(lts[4])
După executarea codului, va apărea o eroare (excepție):
IndexError: list index out of range
Dacă, totuși, trebuie să continuăm lucrul fără
a afișa excepția, aceasta trebuie prinsă cu
ajutorul construcției try-except. Ea
are următoarea sintaxă:
try:
# cod care poate genera o excepție
except:
# tratarea erorii
În blocul try trebuie plasat codul
care poate conține o excepție. Dacă
la executarea acestui cod apare
o situație excepțională, atunci executarea
codului nu se va opri, ci va trece în codul blocului
except. În acest bloc trebuie
specificat afișarea unui mesaj care descrie
cât mai exact esența erorii apărute.
Dacă la executarea blocului try
nu apar situații excepționale,
atunci codul util va fi executat, iar codul
din blocul except - nu.
Să prindem excepția noastră la accesarea
unui element inexistent al listei. Pentru
aceasta, în blocul try plasăm codul cu
eroarea potențială. Iar în blocul except
specificăm afișarea în consolă a mesajului 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
După executarea codului se va afișa:
'error: elem is not exist'
După studierea construcției try-except
stilul codului scris de dvs. ar trebui să se schimbe.
Acum toate locurile în care poate apărea
o situație excepțională, trebuie să fie împachetate
în try, iar în blocul except
să fie specificată reacția la această excepție.
Cereți utilizatorului două numere. Împărțiți unul la celălalt. Prindeți situația excepțională de împărțire la zero.
Cereți utilizatorului un număr. Găsiți rădăcina pătrată a acestui număr. Prindeți situația excepțională de extragere a rădăcinii dintr-un număr negativ.
Este dată o listă. Cereți utilizatorului un număr întreg. Obțineți elementul listei, al cărui index l-a introdus utilizatorul. Prindeți situația excepțională care va apărea dacă utilizatorul a introdus un număr în afara intervalului listei.
Este dat următorul cod:
num = '5'
res = num + 2
print(res)
Ce nu este în regulă cu acest cod? Corectați-i neajunsurile.
Este dat următorul cod:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Ce nu este în regulă cu acest cod? Corectați-i neajunsurile.