Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Le eccezioni sono eventi scatenati da errori di varia natura.

Quando un'eccezione si verifica in nostro programma,all'interno di un contesto d'errore che abbiamo gestito, possiamo gestirla, allora si parla di handled exception.
 
Diciamo che le eccezioni sono gestite come in Java, quindi se il blocco di codice più esterno ha previsto l'eccezione scatenata, potrà gestirla, altrimenti l'esecuzione uscirà anche da questo blocco e così via, quindi sale verso l'alto fino all'uscita dal programma.
 
Istruzioni try e except
>>> 1/0
Traceback ... ZeroDivisionError: ....
 
L'eccezione è stata generata in modalità interattiva, quindi ci siamo trovati  di nuovo con il prompt di Pyhton per ricevere nuovi comandi come se nient fosse.
 
Se invece quell'istruzione fosse stata inserita in uno script ed eseguito con python script.py, si sarebbe uscito dal programma e tornati al prompt del sistema operativo.
Lo script è andato in crash (è crollato).
 
gestiamo l'eccezione:
Esempio: script.py
a = 1
b = 0
try:
    print ""Risultato:", a/b
except ZeroDivisionError:
    print "Divisione per Zero!"
print "Fine programma"
 
Ora invece, uscirà sempre il programma, MA ora viene presentato un messaggio migliore e abbiamo anche un messaggio finale del programma.
 
Come funziona?
Il blocco try viene eseguito fino in fondo SE NON viene sollevata nessuna eccezzione, e poi il controllo prosegue nelle istruzioni FUORI dal blocco except, il blocco except NON VIENE ESEGUITO.
Se invece viene sollevata un eccezione, si entra nel blocco except appropriato, se esiste,  e si eseguono le istruzioni all'interno di quel blocco.
 
E' ovviamente possibile prevedere più blocchi except per ogni try.
 
L'ultima clausola except "default except", se specificata, individuerà ogni eccezione non gestita. 
 
Istruzione raise
permette di sollevare un'eccezione.
 
Esempio:
try:
    print "Adesso solleveremo un'eccezione"
    raise ValueError, "SOLLEVATA!"
except:
    print "Un' eccezione si è sollevata!"
    raise #passa il controllo all'esterno
 
Istruzioni finally ed else
Il blocco di istruzioni all'interno di finally viene eseguito sempre e comunque.
Il blocco di istruzioni in else viene invece eseguito solo se tutto è andato bene e non sono state sollevate eccezioni.
Average (1 Vote)
The average rating is 5.0 stars out of 5.