Interceptarea diferitelor tipuri de excepții în Python
În același cod poate fi necesar să interceptăm diferite tipuri de excepții.
Să presupunem că trebuie să prindem o excepție la împărțire la zero. La o astfel de eroare apare excepția:
ZeroDivisionError: division by zero
Pentru a o prinde, numele excepției trebuie
să fie scris în blocul except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
De asemenea, să presupunem că avem o listă:
lst = [1, 2, 3]
Dacă în blocul try este setat cod cu o altă
eroare potențială, de exemplu, cu afișarea
unui element inexistent, atunci excepția,
neprinsă în blocul except, va trece
mai departe și va fi afișată în consolă. Din această cauză
se va opri funcționarea codului:
lst = [1, 2, 3]
try:
print(lst[4]) # va afișa IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Pentru a rezolva această situație, trebuie să specificăm în fiecare bloc numele tipului corespunzător de excepții. Să adăugăm în codul nostru excepția pentru elementul lipsă:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Este dat următorul cod:
txt = '2'
res1 = txt + 3
res2 = txt1
Scrieți cod pentru a intercepta excepțiile
prezentate în variabilele res1 și res2.