ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Espressioni | Comandi | Funzioni | Moduli | Classi | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Corso Python
Python: Moduli ed Eccezioni
Moduli
Estendere il path
Packages
Eccezioni
Catturare Eccezioni
Gestione eccezioni:
Approfondimento


<<< Gestione eccezioni: >>>

Abbiamo visto intuitivamente come funziona. Ma entriamo in dettaglio spiegando il meccanismo di gestione delle eccezioni. Un blocco di codice sottoposto controllo di eccezione inizia con "try". Come di consueto in Python, il blocco di codice dipendente dal "try" deve essere indentato.

Il blocco "try" ammette vari tipi di clausole, che seguono il blocco indentato. Le clausole, come la else dell'if, sono indentate allo stesso livello del try. La clausola più importante è quella per catturare le eccezioni, che è "except".

Questa parola chiave può essere seguita, opzionalmente, dal tipo dell'eccezione, e poi, separata da virgola, da una variabile a cui viene assegnata eventualmente l'eccezione.

Il netto effetto è che, quando viene sollevata una eccezione di un certo tipo, scatta la clausola in grado di gestire quello specifico tipo di eccezione.

La clausola può poi far eseguire codice dipendente, che può esaminare l'eccezione (assegnata alla variabile per poterla esaminare). L'eccezione è un oggetto come tutti gli altri, con classi e metodi, e contiene in generale informazioni utili alla gestione dello stesso.

Le clausola di tipo except possono essere più di una, e la prima che soddisfa un tipo di eccezione, la cattura.

Notare che le eccezioni sono gerarchiche, e che una clausola di gestione di errore aritmetico, gestisce anche eccezioni di divisione per zero o di overflow, che sono da esse derivate. Viceversa una clausola specifica per gestire ZeroDivisionError NON gestisce generici AritmeticError o addirittura altri errori derivati come OverflowError.

Una clausola "except" senza parametri cattura qualsiasi eccezione venga sollevata, di qualunque tipo. Viene utilizzata per una un gestione errori "a grana grossa", oppure come "ultima spiaggia" per catturare errori imprevisti o, se previsti, inattesi.

È ammessa anche una clausola "else", che interviene quando non c'è stato alcun errore. Normalmente infatti le clausole "except" catturano eccezioni, ma non è detto che queste ci siano. Se, e solo se, non ci sono state eccezioni, viene eseguito il codice dipendente dalla else. Almeno una "except" è obbligatoria dopo una "try", ma la "else" è opzionale.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com