Guida Didattica · Percorso Python

Gestione Errori ed Eccezioni

Impara a prevedere e gestire gli imprevisti: try/except per programmi robusti che non si bloccano.

0 di 5 passaggi completati

01Fondamenti

Cos'è un'eccezione?

Quando Python incontra un problema durante l'esecuzione (dividere per zero, aprire un file inesistente, convertire testo in numero non valido), interrompe il programma e mostra un messaggio di errore chiamato "eccezione". Senza gestione, il programma si blocca lì.

numero = int(input("Inserisci un numero: "))
print(10 / numero)
# Se l'utente scrive 0, il programma si blocca con ZeroDivisionError

try/except: prevenire il blocco

Con try/except diciamo a Python: "prova a eseguire questo codice, ma se succede un errore, non bloccarti: fai invece quest'altra cosa".

try:
    numero = int(input("Inserisci un numero: "))
    print(10 / numero)
except ZeroDivisionError:
    print("Non puoi dividere per zero!")
except ValueError:
    print("Devi inserire un numero valido!")

02Le Eccezioni più Comuni

EccezioneQuando si verifica
ZeroDivisionErrorQuando si divide un numero per zero
ValueErrorQuando un valore ha il tipo giusto ma non è utilizzabile (es. int("ciao"))
TypeErrorQuando si combinano tipi di dato incompatibili (es. "5" + 5)
FileNotFoundErrorQuando si tenta di aprire in lettura un file che non esiste
KeyErrorQuando si cerca in un dizionario una chiave che non esiste
IndexErrorQuando si accede a un indice di lista che non esiste
🎯 try/except mirato▶

È buona pratica specificare il tipo di eccezione da gestire, invece di catturare "tutto" genericamente: rende il codice più chiaro su cosa ci si aspetta possa andare storto.

try: voto = int(input("Voto: ")) except ValueError: print("Inserisci solo numeri")
➕ else: quando tutto va bene▶

Il blocco else si esegue solo se il codice nel try non ha generato errori: utile per separare la logica di successo da quella di gestione errori.

🔚 finally: sempre eseguito▶

Il blocco finally si esegue sempre, che ci sia stato un errore o meno: perfetto per operazioni di pulizia, come chiudere una connessione o un file.

🚨 raise: sollevare un'eccezione▶

Puoi anche generare tu stesso un'eccezione con raise, per segnalare una situazione anomala nel tuo stesso codice.

def imposta_età(età): if età < 0: raise ValueError("L'età non può essere negativa")

03Checklist Pratica

Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato di questa guida al termine.

Esempio per il punto 1

try:
    a = 10
    b = 0
    print(a / b)
except ZeroDivisionError:
    print("Non puoi dividere per zero!")
1. Scrivi un try/except sempliceProva a dividere due numeri e gestisci l'eventuale divisione per zero, come nell'esempio sopra.

Esempio per il punto 2

try:
    numero = int(input("Numero: "))
    print(10 / numero)
except ZeroDivisionError:
    print("Errore: divisione per zero")
except ValueError:
    print("Errore: devi inserire un numero")
2. Gestisci più tipi di erroreAggiungi un secondo except per gestire un input non numerico, come nell'esempio sopra.

Esempio per il punto 3

try:
    numero = 5
    risultato = 10 / numero
except ZeroDivisionError:
    print("Errore")
else:
    print(f"Risultato: {risultato}")  # solo se non ci sono stati errori
3. Usa elseAggiungi un blocco else al tuo try/except che si esegue solo se non ci sono stati errori, come sopra.

Esempio per il punto 4

try:
    risultato = 10 / 5
except ZeroDivisionError:
    print("Errore")
finally:
    print("Operazione conclusa")  # sempre, con o senza errore
4. Usa finallyAggiungi un blocco finally che stampa sempre un messaggio, come nell'esempio sopra.
5. Completa il quiz di verificaScendi in fondo alla guida e rispondi correttamente ad almeno l'80% delle domande.

04Glossario Interattivo

Tocca ogni termine per vederne la definizione.

05Quiz di Verifica

06Esercitazioni Pratiche

Esercizio 1

La calcolatrice sicura

Scrivi uno script che chiede due numeri e li divide, gestendo con try/except sia ZeroDivisionError che ValueError (se l'utente inserisce testo invece di numeri).

⏱ 15 minuti📦 Script testato con 3 casi diversi🖥️ Individuale
Esercizio 2

Il dizionario protetto

Crea un dizionario con 3 chiavi. Scrivi uno script che prova ad accedere a una chiave scelta dall'utente, gestendo con try/except il caso in cui la chiave non esista (KeyError).

⏱ 15 minuti📦 Script + test con chiave esistente e inesistente🖥️ Individuale
Esercizio 3

Trova l'errore: l'except silenzioso

Questo codice "funziona" ma nasconde un problema: try: risultato = 10 / 0 except: pass. Spiega perché usare un except vuoto è una cattiva pratica e come lo miglioreresti.

⏱ 10 minuti📦 Spiegazione scritta + versione migliorata🖥️ Individuale o in coppia

🎓 Attestato di completamento

Completa tutti i 5 passaggi della checklist per sbloccare il tuo attestato in PDF.

0 / 5 passaggi completati