Funzione con eccezione in Python
Le eccezioni sono molto comode da lanciare, inserendole nelle funzioni tramite condizioni.
Creiamo una funzione get_sum,
che restituirà la somma degli elementi
di una lista solo se la lunghezza della lista è minore
o uguale a 3. In caso contrario,
venga lanciata la nostra eccezione ToBigLength:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Ora passiamo alla funzione get_sum
una lista e stampiamo il risultato in console:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # stamperà 6
Nelle funzioni è anche possibile intercettare
più tipi di eccezioni. Creiamo
un'altra classe di eccezioni ToSmallLength:
class ToSmallLength(Exception):
pass
Ora scriviamo nella funzione una condizione: se
la lunghezza della lista è zero, allora viene lanciata
ToSmallLength. Se invece non viene intercettata
nessuna eccezione, allora viene restituita
la somma di tutti gli elementi della lista:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Per comodità, possiamo racchiudere la lista che
verrà passata come parametro alla funzione,
la funzione stessa e la sua chiamata in un blocco try.
E posizioniamo l'intercettazione delle nostre due eccezioni
nei blocchi except:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Create una funzione che accetti un numero come parametro.
In essa, scrivete delle condizioni:
se il numero è negativo o uguale a zero,
vengano lanciate le rispettive eccezioni.
in caso contrario il numero viene
moltiplicato per 3.
Verificate il funzionamento della funzione da voi creata
usando la struttura try-except. Inoltre,
intercettate le vostre eccezioni.