Intercettare diversi tipi di eccezioni in Python
Nello stesso codice potrebbe essere necessario intercettare diversi tipi di eccezioni.
Supponiamo di dover catturare un'eccezione durante la divisione per zero. In caso di errore di questo tipo viene sollevata l'eccezione:
ZeroDivisionError: division by zero
Per catturarla, il nome dell'eccezione deve essere
specificato nel blocco except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Supponiamo inoltre di avere una lista:
lst = [1, 2, 3]
Se nel blocco try viene inserito del codice con un altro
tipo di errore potenziale, ad esempio l'accesso a un
elemento inesistente, l'eccezione
non catturata nel blocco except si propagherà
oltre e verrà stampata nella console. Ciò causerà
l'arresto dell'esecuzione del codice:
lst = [1, 2, 3]
try:
print(lst[4]) # solleverà IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Per risolvere questa situazione, è necessario specificare
in ogni blocco except il nome del tipo corrispondente
di eccezione. Aggiungiamo al nostro codice la gestione
dell'eccezione per l'elemento mancante:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem does not exist')
È dato il seguente codice:
txt = '2'
res1 = txt + 3
res2 = txt1
Scrivi il codice per intercettare le eccezioni
presenti nelle variabili res1 e res2.