L'istruzione raise in python

Nel linguaggio Python il comando raise mi permette di sollevare manualmente una eccezione dentro il codice.

La sintassi

raise [espressione]

A cosa serve?

Posso usarlo per mandare in errore il programma quando si presenta un determinato evento anomalo.

In questo caso l'istruzione propaga l'ultima eccezione che si è verificata o va in errore.

raise

In alternativa, posso invocare appositamente una particolare eccezione per gestirla in una struttura try except.

try:
raise errore:
except errore:
...

    Esempi pratici

    Ecco qualche esempio pratico per capire il funzionamento dell'istruzione raise in python.

    Esempio 1

    In questo script verifico il segno della variabile voto..

    Se il numero è negativo, genero artificialmente un errore nel programma.

    1. voto=-1
    2. if (voto <= 0):
    3. raise "attenzione valore negativo"
    4. print(voto)

    L'output del programma è il seguente:

    Traceback (most recent call last):
    File "Python36-32\tutorial.py", line 3, in <module>
    raise "attenzione valore negativo"
    TypeError: exceptions must derive from BaseException

    Il programma va in errore e si blocca. In questo modo evito il proseguimento dell'elaborazione se l'errore.

    E' utile se l'errore è particolarmente grave e non può essere gestito in altri modi.

    Esempio 2

    In questo esempio sollevo un'eccezione TypeError nella riga 3 della struttura try.

    1. try:
    2. print("1")
    3. raise TypeError
    4. except ZeroDivisionError:
    5. print("2")
    6. except TypeError:
    7. print("3")

    L'interprete python cerca ed esegue la clausola excpet TypeError alla riga 6.

    L'output dello script è il seguente:

    1
    3

    Esempio 3

    In questo script passo degli argomenti all'eccezione.

    1. try:
    2. print("1")
    3. raise Exception('4')
    4. except NameError:
    5. print("3")
    6. except Exception as problema:
    7. print(problema)

    L'output del programma

    1
    4

    Esempio 4 ( propagazione delle eccezioni )

    In questo esempio digito raise senza alcuna eccezione nella riga 6.

    1. try:
    2. print("1")
    3. raise Exception('4')
    4. except Exception as problema:
    5. print(problema)
    6. raise

    In questo caso, l'istruzione raise propaga l'ultima eccezione che si è verificata ossia "4" ( riga 3 ).

    L'output dello script è il seguente:

    1
    4
    Traceback (most recent call last):
    File "tutorial.py", line 3, in <module>
    raise Exception('4')
    Exception: 4

    Il programma esegue la riga 2 e solleva la prima eccezione alla riga 3.

    Poi invoca la seconda eccezione alla riga 6 che eredita l'ultima eccezione (Exception('4')].

    Non trovando altre clausole except per gestirla, lo script va in errore.

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Python ( eccezioni )

    1. Come gestire le eccezioni

    Le istruzioni

    1. try except
    2. pass
    3. raise
    4. sys.exc_info()