Skip to content

Gestione Errori e CLI

Basato su: Manuale Python per principianti (freeCodeCamp)


  • ✅ Gestire eccezioni con try/except/else/finally
  • ✅ Usare l’istruzione with per il context management
  • ✅ Fare debugging con pdb e logging
  • ✅ Accettare argomenti dalla riga di comando

  • Capire cosa sono le eccezioni
  • Gestirle con try/except
  • Usare else, finally, raise

Contenuti (dal manuale, sezione “Eccezioni in Python”)

Section titled “Contenuti (dal manuale, sezione “Eccezioni in Python”)”
  1. Eccezioni: errori che fermano il programma
  2. try: blocco che potrebbe generare errore
  3. except NomeErrore: catturare eccezioni specifiche
  4. else: si esegue se nessuna eccezione
  5. finally: si esegue SEMPRE
  6. raise: lanciare eccezioni intenzionalmente
  7. Eccezioni comuni: ValueError, TypeError, ZeroDivisionError, FileNotFoundError
  8. Creare eccezioni personalizzate
try:
numero = int(input("Inserisci un numero: "))
risultato = 10 / numero
except ValueError:
print("Errore: devi inserire un numero!")
except ZeroDivisionError:
print("Errore: divisione per zero!")
else:
print(f"Risultato: {risultato}")
finally:
print("Operazione completata")
# raise
def dividi(a, b):
if b == 0:
raise ValueError("Non puoi dividere per zero!")
return a / b
  • Manuale → sezione Eccezioni in Python

Contenuti (dal manuale, sezione “L’istruzione with in Python”)

Section titled “Contenuti (dal manuale, sezione “L’istruzione with in Python”)”
  1. Context manager: gestire risorse (file, connessioni)
  2. with open("file.txt", "r") as f: — chiusura automatica
  3. Equivalente a try/finally ma più pulito
  4. contextlib per creare context manager custom
# with per leggere file (chiusura automatica)
with open("prova.txt", "w") as f:
f.write("Ciao mondo!")
with open("prova.txt", "r") as f:
contenuto = f.read()
print(contenuto)
# Senza with (bisogna chiudere manualmente)
f = open("prova.txt", "r")
contenuto = f.read()
f.close() # facile dimenticarlo!
  • Manuale → sezione L’istruzione with in Python

Contenuti (dal manuale, sezione “Debugging in Python”)

Section titled “Contenuti (dal manuale, sezione “Debugging in Python”)”
  1. print debugging: stampare variabili
  2. pdb: debugger interattivo
  3. traceback: leggere l’stack trace degli errori
  4. logging: registrare eventi con livelli (debug, info, warning, error)
# print debugging
def somma_lista(numeri):
print(f"DEBUG: ricevuti {numeri}")
totale = sum(numeri)
print(f"DEBUG: totale = {totale}")
return totale
# pdb (sblocca debugging interattivo)
import pdb
def funzione_con_bug(x, y):
risultato = x / y
pdb.set_trace() # si ferma qui per debugging
return risultato * 2
# logging
import logging
logging.basicConfig(level=logging.INFO)
logging.info("Programma avviato")
logging.warning("Attenzione: file non trovato, uso default")
  • Manuale → sezione Debugging in Python

📅 Lezione 4 — Argomenti da riga di comando

Section titled “📅 Lezione 4 — Argomenti da riga di comando”

Contenuti (dal manuale, sezione “Come accettare argomenti dalla riga di comando in Python”)

Section titled “Contenuti (dal manuale, sezione “Come accettare argomenti dalla riga di comando in Python”)”
  1. sys.argv: lista di argomenti dal terminale
  2. sys.argv[0] è il nome dello script
  3. argparse: parsing avanzato per applicazioni CLI professionali
# sys.argv base
import sys
print(f"Nome script: {sys.argv[0]}")
if len(sys.argv) > 1:
print(f"Argomenti: {sys.argv[1:]}")
# argparse
import argparse
parser = argparse.ArgumentParser(description="Calcolatrice CLI")
parser.add_argument("--numero", type=int, help="Un numero", required=True)
parser.add_argument("--verbose", action="store_true", help="Output dettagliato")
args = parser.parse_args()
if args.verbose:
print(f"Numero inserito: {args.numero}")
print(f"Quadrato: {args.numero ** 2}")
  • Manuale → sezione Come accettare argomenti dalla riga di comando in Python

"""
ESERCIZIO 1: Calcolatrice robusta
Crea una calcolatrice che chiede due numeri e un'operazione.
Gestisci TUTTE le eccezioni possibili (ValueError, ZeroDivisionError).
Usa un loop per continuare fino a quando l'utente dice "esci".
"""
"""
ESERCIZIO 2: Task Manager CLI
Crea un programma da riga di comando che:
- Accetta --add "titolo" per aggiungere un task
- Accetta --list per listare tutti i task
- Salva i task in un file JSON
"""

DomandaRisposta
Blocchi di try/except?try, except, else (opz.), finally (opz.)
Differenza tra else e finally?else: solo se nessun errore. finally: sempre
Cosa fa raise ValueError("msg")?Lancia intenzionalmente un’eccezione
Vantaggio di with rispetto a try/finally?Codice più pulito, chiusura automatica risorse
Cos’è sys.argv?Lista di argomenti passati da riga di comando
Modulo per CLI professionali?argparse