- 1 1. Panoramica sulla Gestione delle Eccezioni in Python
- 2 2. Cos’è l’Istruzione try-except?
- 3 3. Eccezioni Comuni e Come Gestirle
- 4 4. Recupero dei Dettagli degli Errori Utilizzando Oggetti Eccezione
- 5 5. Utilizzo del Blocco finally
- 6 6. Sollevare Eccezioni con raise
- 7 7. Buone pratiche per la gestione delle eccezioni in Python
1. Panoramica sulla Gestione delle Eccezioni in Python
Cos’è la Gestione delle Eccezioni in Python?
Durante l’esecuzione del programma, potrebbero verificarsi errori imprevisti. Questi sono chiamati “eccezioni” e quando si verificano, il programma di solito si ferma. Python fornisce la gestione delle eccezioni per gestire questi errori. Utilizzando la gestione delle eccezioni, è possibile rispondere agli errori in modo appropriato e garantire che il programma continui a funzionare senza intoppi.
Perché la Gestione delle Eccezioni è Importante?
La gestione delle eccezioni è cruciale per mantenere il programma in esecuzione senza intoppi per gli utenti, anche quando si verificano errori. Aiuta anche a identificare la causa degli errori e a facilitare il debug, portando infine a programmi più affidabili.
2. Cos’è l’Istruzione try-except?
Sintassi Base
In Python, l’istruzione try-except viene utilizzata per gestire errori potenziali. Il codice che potrebbe causare un errore viene scritto all’interno del blocco try, mentre il blocco except contiene il meccanismo di gestione nel caso in cui si verifichi un errore. Ecco la sintassi base:
try:
# Code that may cause an error
except SomeError:
# Code to handle the error
Se il codice all’interno del blocco try viene eseguito senza errori, il blocco except viene ignorato. Tuttavia, se si verifica un errore, il programma esegue il codice di gestione appropriato nel blocco except.
Esempio Comune: Errore di Divisione per Zero
Tentare di dividere per zero risulta in un ZeroDivisionError. Questo errore può essere gestito come segue:
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero")

3. Eccezioni Comuni e Come Gestirle
1. ZeroDivisionError
Questa eccezione si verifica quando si tenta una divisione per zero. Ad esempio, tentare di dividere un numero per 0 solleverà automaticamente un ZeroDivisionError in Python.
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero")
2. ValueError
Un ValueError si verifica quando viene passato un valore non valido a una funzione o operazione. Nell’esempio seguente, tentiamo di convertire una stringa che non è un numero valido in un intero.
try:
num = int("not_a_number")
except ValueError:
print("Invalid value")
3. Gestione di Più Eccezioni
Se si desidera gestire più eccezioni contemporaneamente, è possibile utilizzare l’istruzione except con più eccezioni raggruppate insieme:
try:
result = 10 / "string"
except (ZeroDivisionError, TypeError):
print("An error occurred")
4. Recupero dei Dettagli degli Errori Utilizzando Oggetti Eccezione
Utilizzo di as per Catturare Oggetti Eccezione
Con l’istruzione except, è possibile utilizzare la parola chiave as per catturare l’oggetto eccezione. Questo consente di fare riferimento ai dettagli dell’errore o di registrarli per un’ulteriore analisi.
try:
a = 10 / 0
except ZeroDivisionError as e:
print(f"An error occurred: {e}")
In questo codice, quando si verifica un ZeroDivisionError, il messaggio di errore viene memorizzato nella variabile e e visualizzato nell’output.
5. Utilizzo del Blocco finally
Cos’è finally?
Il blocco finally viene utilizzato per eseguire codice indipendentemente dal fatto che si verifichi o meno un’eccezione. È particolarmente utile per attività come la chiusura di file o la pulizia di connessioni al database, garantendo che le operazioni necessarie siano sempre eseguite.
try:
file = open("test.txt", "r")
except FileNotFoundError:
print("File not found")
finally:
print("File operation completed")
Pulizia delle Risorse
Il blocco finally è utile per rilasciare risorse alla fine di un programma. Ad esempio, è possibile utilizzare finally per assicurarsi che un file sia sempre chiuso.
try:
file = open("data.txt", "r")
# Perform file operations
finally:
file.close()
Utilizzando il blocco finally, è possibile garantire che il file sia chiuso correttamente, anche se si verifica un errore.
6. Sollevare Eccezioni con raise
Il Ruolo di raise
L’istruzione raise consente agli sviluppatori di generare manualmente eccezioni. Questo è utile per convalidare gli input o imporre condizioni lanciando esplicitamente un errore.
def check_value(value):
if value < 0:
raise ValueError("Negative values are not allowed")
Esempio di un’eccezione personalizzata
Generando errori per condizioni specifiche, è possibile prevenire input non validi e comportamenti inattesi.

7. Buone pratiche per la gestione delle eccezioni in Python
1. Evitare una gestione eccessiva delle eccezioni
Un uso eccessivo della gestione delle eccezioni può rendere il codice più difficile da leggere e fare il debug. Le eccezioni dovrebbero essere usate solo nelle parti del codice dove è probabile che si verifichino errori, piuttosto che essere integrate nel flusso normale del programma.
2. Utilizzare il logging per registrare gli errori
Quando si verifica un’eccezione, è importante registrare il messaggio di errore. Questo aiuta a rintracciare la causa dell’errore in seguito. L’esempio seguente mostra come utilizzare il modulo logging:
import logging
try:
a = 10 / 0
except ZeroDivisionError as e:
logging.error(f"An error occurred: {e}")
3. Evitare l’uso di dichiarazioni except generiche
Si consiglia di catturare errori specifici piuttosto che utilizzare una dichiarazione generica except Exception. Catturare troppi errori contemporaneamente può rendere più difficile identificare il problema esatto, quindi gestire le eccezioni specifiche separatamente è un approccio migliore.



![[Guida completa alla funzione type() di Python] Dalle basi all’uso avanzato](https://www.python.digibeatrix.com/wp-content/uploads/2024/09/fa2ef99250fadd724e5006624756bd6a-375x375.webp)