Le eccezioni in Python
Il linguaggio Python consente di gestire le eccezioni ( exception ) in modo simile ad altri linguaggi di programmazione come il Java.
Cos'è un'eccezione? Si tratta di un evento imprevisto che impedisce o altera l'esecuzione del programma. Ad esempio, la divisione per zero di un valore numerico, ecc. Le eccezioni servono a gestire il verificarsi di questi eventi anomali.
Per gestire le eccezioni in Python si utilizzano le istruzioni TRY / EXCEPT.
Un esempio di eccezione in Python
In questo programma ho volutamente creato una situazione di errore.
Nelle prime due righe assegno il valore zero e cinque alle variabili A e B.
Nella terza riga visualizzo il risultato della divisione di A per B.
a=0
b=0
print(b/a)
La divisione di qualsiasi numero per zero è impossibile.
Pertanto, l'esecuzione del codice restituisce un errore.
ERROR
Come gestire l'errore con un'eccezione
Per impedire la visualizzazione dell'errore posso prevedere questa ipotesi durante lo sviluppo del codice e gestirla tramite un eccezione.
Inserisco l'istruzione TRY prima di PRINT. In questo modo dico al programma di tentare l'operazione.
try:
print(b/a)
except ZeroDivisionError:
print("divisione per zero impossibile")
Dopo PRINT aggiungo la clausola EXCEPT seguita dal parametro dell'errore che voglio intercettare ( ZeroDivisionError ) e dal codice alternativo da eseguire nel caso si verificasse.
Il risultato dell'esecuzione del programma
Durante l'esecuzione il programma non restituisce più un messaggio di errore.
- Se la divisione B/A è possibile, il programma visualizza il risultato della divisione ( quoziente ). Ad esempio, se B=6 e A=2 il programma visualizza il numero 3 come risultato:
3
- Se la divisione B/A è impossibile perché A è uguale a zero ( A=0), qualunque sia il valore di B il programma visualizza il messaggio "divisione per zero impossibile".
divisione per zero impossibile
In questo modo ho intercettato un errore e l'ho gestito tramite un'eccezione.
Attenzione. Ogni eccezione gestisce soltanto un tipo di errore ma non altri. Nell'esempio precedente ho gestito una tipologia di errore ( divisione per zero ). Se si verificasse un altro tipo di errore ( es. uno dei due valori è alfanumerico ) il programma restituirebbe comunque un errore.
I tipi di eccezioni in Python
Nel linguaggio Python esistono due tipologie di eccezioni:
- Le eccezioni gestite ( handled )
- Le eccezioni non gestite ( unhandled ).