In Python, le eccezioni possono essere gestite utilizzando i blocchi try, except e finally.
Ecco come funzionano:
- Try: Il blocco di codice all’interno del blocco try viene eseguito.
- Except: Se si verifica un’eccezione durante l’esecuzione del blocco try, il blocco except viene eseguito. Questo è il blocco di codice che gestisce l’eccezione.
- Finally: Il blocco finally viene eseguito indipendentemente dal fatto che si verifichi un’eccezione nel blocco try o no. Questo è tipicamente utilizzato per eseguire operazioni di pulizia.
Ecco un esempio di come gestire le eccezioni in Python:
```
try:
# Blocco di codice da eseguire
numero = int(input(“Inserisci un numero: “))
except ValueError:
# Come gestire l’eccezione
print(“Questo non è un numero valido!”)
finally:
# Blocco di codice da eseguire indipendentemente dall’eccezione
print(“Fine del programma.”)
```
In questo esempio, se l’utente inserisce un valore che non può essere convertito in un intero (ad esempio, una stringa di testo), si verifica un’eccezione ValueError. Il codice nel blocco except viene quindi eseguito e viene visualizzato un messaggio di errore. Indipendentemente dal fatto che si verifichi un’eccezione o no, il messaggio “Fine del programma” viene stampato perché si trova nel blocco finally.
Python supporta anche l’istruzione `else` in combinazione con `try/except`. Il blocco di codice all’interno del blocco `else` viene eseguito se nessuna eccezione si verifica nel blocco `try`.
Puoi anche gestire più tipi di eccezioni specificando più blocchi except. Ecco un esempio:
```
try:
# Blocco di codice da eseguire
numero = int(input(“Inserisci un numero: “))
reciproco = 1 / numero
except ValueError:
# Come gestire l’eccezione ValueError
print(“Questo non è un numero valido!”)
except ZeroDivisionError:
# Come gestire l’eccezione ZeroDivisionError
print(“Impossibile calcolare il reciproco di zero!”)
```
In questo esempio, il codice può sollevare una ValueError se l’input non può essere convertito in un intero, o una ZeroDivisionError se l’input è zero. Ogni eccezione viene gestita dal suo blocco except corrispondente.