Gestione delle eccezioni in Python
In Python, rispetto ad altri linguaggi di programmazione, ci sono molte situazioni che generano eccezioni.
Esaminiamole più in dettaglio. Supponiamo di avere una lista:
lst = [1, 2, 3]
Accediamo a un elemento inesistente della lista:
print(lts[4])
Dopo l'esecuzione del codice, verrà visualizzato un errore (eccezione):
IndexError: list index out of range
Se invece abbiamo bisogno di continuare il lavoro senza
visualizzare l'eccezione, dobbiamo catturarla
utilizzando il costrutto try-except. Esso
ha la seguente sintassi:
try:
# codice che può generare un'eccezione
except:
# gestione dell'errore
Nel blocco try dovrebbe essere inserito il codice
che potrebbe contenere un'eccezione. Se
durante l'esecuzione di questo codice si verifica
una situazione eccezionale, l'esecuzione
del codice non si interromperà, ma passerà al codice del blocco
except. In questo blocco è necessario
scrivere un messaggio che descriva nel modo più preciso
possibile l'errore verificatosi.
Se invece durante l'esecuzione del blocco try
non si verifica alcuna situazione eccezionale,
allora il codice utile verrà semplicemente eseguito, mentre il codice
del blocco except non verrà eseguito.
Ora intercettiamo la nostra eccezione durante l'accesso
a un elemento inesistente della lista. Per
farlo, inseriamo nel blocco try il codice con
il potenziale errore. E nel blocco except
indichiamo la stampa a video del messaggio 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Dopo l'esecuzione del codice, verrà visualizzato:
'error: elem is not exist'
Dopo aver studiato il costrutto try-except,
lo stile del codice che scriverete dovrebbe cambiare.
Ora tutti i punti in cui può verificarsi
una situazione eccezionale devono essere racchiusi
in try, e nel blocco except
bisogna specificare la reazione a questa eccezione.
Chiedete all'utente due numeri. Dividete il primo per il secondo. Intercettate la situazione eccezionale della divisione per zero.
Chiedete all'utente un numero. Calcolate la radice quadrata di questo numero. Intercettate la situazione eccezionale dell'estrazione della radice da un numero negativo.
Data una lista. Chiedete all'utente un numero intero. Ottenete l'elemento della lista il cui indice è stato inserito dall'utente. Intercettate la situazione eccezionale che si verificherà se l'utente ha inserito un numero al di fuori dell'intervallo della lista.
Dato il seguente codice:
num = '5'
res = num + 2
print(res)
Cosa non va in questo codice? Correggere i suoi difetti.
Dato il seguente codice:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Cosa non va in questo codice? Correggere i suoi difetti.