Keywords: easytut-it

Next: Fine Up: Tutorial per principianti in Previous: File IO Indice
Subsections

- Esercizi

# Occuparsi dell'imperfetto (o come gestire gli errori)

Ora avete un programma perfetto, funziona senza crepe, ad eccezione di un dettaglio: va in crash se l'utente inserisce un input errato. Non abbiate paura, Python ha una speciale struttura di controllo per eliminare questi imprevisti. Sto parlando di `try`... try tenta di fare qualcosa. Segue un esempio di un programma che contiene un problema:

    print "Type Control C or -1 to exit"
    number = 1
    while number != -1:
        number = int(raw_input("Enter a number: "))
        print "You entered: ",number

Se tentate di inserire qualcosa come `@#&` l'output sarà simile a questo:

    Traceback (innermost last):
      File "try_less.py", line 4, in ?
        number = int(raw_input("Enter a number: "))
    ValueError: invalid literal for int(): @#&

Come potete vedere la funzione `int` non funziona (e non deve funzionare) con il numero `@#&`. L'ultima linea mostra qual'è l'errore: Python ha trovato un `ValueError`. Come fare in modo che il nostro programma sappia gestire anche questo valore? Innanzitutto inserendo la parte di codice che restituisce l'errore in un blocco `try` e poi decidendo come Python debba trattare `ValueError`. Il seguente programma mostra come ottenere tale comportamento:

    print "Type Control C or -1 to exit"
    number = 1
    while number != -1:
        try:
            number = int(raw_input("Enter a number: "))
            print "You entered: ",number
        except ValueError:
            print "That was not a number."

Ora, quando eseguiremo il nuovo programma ed inseriremo `@#&`, il programma risponderà con la frase ``That was not a number.'' per poi continuare ciò che stava facendo prima.

Quando il vostro programma restituisce un errore che sapete come gestire, mettete il codice in un blocco `try` ed il modo per gestire l'errore nel successivo blocco `except`.

# Esercizi

Aggiornate il programma della rubrica telefonica del capitolo precedente in modo che non si interrompa se l'utente non inserisce dati nel menu.

Next: Fine Up: Tutorial per principianti in Previous: File IO Indice