×

Guida completa a Python

Guida completa a Python

📘 Capitolo 8 – Gestione degli Errori (Eccezioni)

1. Cos’è un’eccezione?

Un’eccezione è un errore che si verifica durante l’esecuzione del programma, che interrompe il normale flusso del codice… a meno che tu non lo gestisca!

Esempio:

x = int("ciao")  # ValueError!

2. Blocco try-except

Serve a intercettare errori e reagire in modo controllato.

try:
x = int(input("Inserisci un numero: "))
print("Hai inserito:", x)
except ValueError:
print("⚠️ Errore: devi inserire un numero valido!")

3. Gestione multipla

Puoi gestire più tipi di errore separatamente:

try:
a = int(input("Numero A: "))
b = int(input("Numero B: "))
risultato = a / b
print("Risultato:", risultato)
except ValueError:
print("⚠️ Inserisci solo numeri interi.")
except ZeroDivisionError:
print("🚫 Non puoi dividere per zero.")

4. Il blocco else

Viene eseguito solo se non ci sono errori.

try:
numero = int(input("Inserisci un numero: "))
except ValueError:
print("Errore!")
else:
print(f"Hai inserito il numero {numero}")

5. Il blocco finally

Viene eseguito sempre, con o senza errori. Utile per pulire risorse (chiudere file, disconnettersi, ecc.).

try:
f = open("esempio.txt", "r")
contenuto = f.read()
print(contenuto)
except FileNotFoundError:
print("File non trovato.")
finally:
print("Operazione completata.")

6. Creare eccezioni personalizzate

Puoi lanciare un errore con raise:

def dividi(a, b):
if b == 0:
raise ZeroDivisionError("Non puoi dividere per zero.")
return a / b

🧪 Esercizio pratico

  1. Chiedere due numeri all’utente
  2. Eseguire la divisione
  3. Gestire:
    • Inserimento non numerico
    • Divisione per zero
  4. Mostrare un messaggio finale a prescindere

Soluzione in Python

print("=== Divisione con gestione degli errori ===")

try:
a = int(input("Inserisci il primo numero: "))
b = int(input("Inserisci il secondo numero: "))

risultato = a / b

except ValueError:
print("⚠️ Errore: devi inserire solo numeri interi.")

except ZeroDivisionError:
print("🚫 Errore: non puoi dividere per zero.")

else:
print(f"✅ Risultato: {a} / {b} = {risultato}")

finally:
print("✔️ Programma terminato.")

Cosa hai imparato?

  • Come evitare crash quando l’utente sbaglia input
  • Come gestire più eccezioni in modo separato
  • Il flusso di tryexceptelsefinally

Pagine: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19