4.2 Eccezioni

Le eccezioni sono un modo per interrompere il normale flusso di controllo del blocco di codice per gestire errori o altre condizioni eccezionali. Un'eccezione viene sollevata nel punto in cui viene rilevato l'errore; può essere gestita da un blocco di codice circostante o da ogni altro blocco di codice dove avviene l'errore.

L'interprete Python solleva un'eccezione quando rileva un errore a run-time (come una divisione per zero). Un programma Pyrhon può anche sollevare esplicitamente un'eccezione con l'istruzione raise. I gestori di eccezioni vengono specificati con l'istruzione try ... except. L'istruzione try ... finally specifica in modo pulito il codice che non gestisce l'eccezione, ma viene eseguito se viee sollevata o meno un'eccezione nel codice precedente.

Python usa il modello ``termination'' della gestione di errori: un gestore di errori può estrarre quello che è successo e continuare l'esecuzione ad un altro livello, ma non può riparare la causa dell'errore e riprovare l'operazione fallita, eccetto reimmettere il codice dannoso dall'inizio.

Quando un'eccezione non viene gestita del tutto, l'interprete termina l'esecuzione del programma, o lo riporta all'esecuzione interattiva del ciclo principale. In ogni caso, stampa una lista, eccetto quando l'eccezione è una SystemExit.

Le eccezioni vengono identificate per istanze di classe. La selezione di una corrispondenza di una clausola except è basata sull'identità dell'oggetto. La clausola except deve riferirsi alla stessa classe o una classe di base della stessa.

Quando viene sollevata un'eccezione, un oggetto (potrebbe essere anche None) viene passato come valore dell'eccezione; questo oggetto non influisce sulla selezione di un gestore di errori, ma viene passato al gestore di errori selezionato come informazione aggiuntiva. Per le classi di eccezioni, questo oggetto deve essere un'istanza della classe di eccezioni sollevata inizialmente.

Avvertimento: i messaggi degli errori non sono parte della API Python. Il loro contenuto può cambiare da una versione di Python ad una nuova senza che vi siano avvertimenti e non dovrebbe essere rilasciata su quel codice che verrà eseguito sotto versioni multiple dell'interprete.

Si veda anche la descrizione dell'istruzione try nella sezione 7.4 e l'istruzione raise nella sezione 6.9.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.