0Pricing
Python Academy · Lezione

try / except / else / finally

Strutturi blocchi di gestione delle eccezioni per ogni scenario.

try / except / else / finally è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Introduzione

La struttura try/except/else/finally di Python offre un controllo completo sulla gestione degli errori e sulla pulizia delle risorse.

try/except di base

try: risky_code() except ExceptionType: handle() — Python esegue il blocco except solo quando viene sollevato quel tipo di eccezione.
try:
    x = int('abc')
except ValueError:
    print('not a number')

Intercettazione dell'oggetto eccezione

except ValueError as e: associa l'eccezione a e. Usi str(e) o e.args per ottenere il messaggio.
try:
    int('oops')
except ValueError as e:
    print(f'Error: {e}')

Intercettazione di più eccezioni

except (TypeError, ValueError) as e: intercetta entrambi i tipi.
for val in ['abc', None, 42]:
    try:
        print(int(val))
    except (TypeError, ValueError) as e:
        print(f'skipping {val!r}: {e}')

except senza tipo (da evitare)

except: (senza tipo) intercetta TUTTO, inclusi KeyboardInterrupt e SystemExit. È quasi sempre un errore: specifichi sempre i tipi.
try:
    risky = 1/0
except ZeroDivisionError:
    print('division error')  # specific

Più clausole except

Può usare più blocchi except, ognuno dei quali gestisce un tipo diverso. Python li prova nell'ordine in cui sono scritti.
def process(val):
    try:
        return 10 / int(val)
    except ValueError:
        print('not a number')
    except ZeroDivisionError:
        print('division by zero')
process('abc')
process('0')

Clausola else

try/except/else: else viene eseguita solo se NON è stata sollevata alcuna eccezione. La usi per il codice da eseguire in caso di successo.
try:
    x = int('42')
except ValueError:
    print('bad input')
else:
    print('parsed:', x)

Clausola finally

finally viene eseguita SEMPRE: dopo il successo di try, dopo except e persino dopo return o break. È perfetta per la pulizia delle risorse.
def read_file(path):
    f = None
    try:
        f = open(path)
        return f.read()
    except FileNotFoundError:
        return None
    finally:
        if f: f.close()
print(read_file('/nonexistent'))

finally con return

Se sono presenti sia return sia finally, finally viene eseguita per prima, ma prevale il valore restituito da finally. Presti attenzione.
def demo():
    try:
        return 'try'
    finally:
        return 'finally'  # overrides!
print(demo())

Blocchi try annidati

I blocchi try possono essere annidati. Un'eccezione interna si propaga verso l'esterno se non viene intercettata dall'except interno.
try:
    try:
        x = 1/0
    except ValueError:
        print('inner')
except ZeroDivisionError:
    print('outer caught it')

Registrazione delle eccezioni

import logging; logging.exception('msg') registra il traceback completo. È perfetto nel codice di produzione.
import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception('Caught an error')

Verifica rapida

Quale clausola viene eseguita indipendentemente dal fatto che si sia verificata un'eccezione?

Riepilogo

try/except intercetta gli errori. else viene eseguita in caso di successo. finally viene sempre eseguita (pulizia). Intercetti tipi specifici ed eviti except senza tipo. Usi as e per accedere all'eccezione.

Continui così

Ottimo lavoro! Passi alla lezione successiva per continuare a fare progressi.

Domande Frequenti

La lezione «try / except / else / finally» è gratuita?

Sì — il testo completo di «try / except / else / finally» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «try / except / else / finally»?

Strutturi blocchi di gestione delle eccezioni per ogni scenario. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «try / except / else / finally»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Comprendere le eccezioni
  2. try / except / else / finally
  3. Sollevamento e nuovo sollevamento delle eccezioni
  4. Classi di eccezioni personalizzate
← Torna a Python Academy