CodeGym /Corsi /Python SELF IT /Gestione di più eccezioni

Gestione di più eccezioni

Python SELF IT
Livello 17 , Lezione 3
Disponibile

4.1 Gestione di più eccezioni

Python ti permette di gestire più eccezioni utilizzando più blocchi except o un unico blocco except con una tupla di eccezioni. Vediamo entrambi gli approcci.

Più blocchi except

Puoi usare più blocchi except per gestire diversi tipi di eccezioni in modi differenti.


try:
    # Codice che potrebbe generare un'eccezione
    result = int("abc")
except ValueError:
    print("Errore: valore non corretto.")
except ZeroDivisionError:
    print("Errore: divisione per zero.")

Un blocco except con una tupla di eccezioni

Puoi gestire più eccezioni in un unico blocco except passandole come una tupla.


try:
    # Codice che potrebbe generare un'eccezione
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Si è verificato un errore: {e}")

Utilizzo di except NameError as var

Quando gestisci le eccezioni puoi usare la sintassi except <ExceptionType> as <variable> per ottenere l'oggetto eccezione. Questo ti consente di accedere alle informazioni sull'eccezione, come il messaggio di errore e altri attributi.


try:
    # Codice che potrebbe generare NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Si è verificato un errore: {e}")
    print(f"Tipo di errore: {type(e)}")

4.2 Ambito della variabile di errore

La variabile in cui viene memorizzata l'eccezione (e nell'esempio precedente) è accessibile solo all'interno del suo blocco except. Al di fuori di questo blocco la variabile non è accessibile.


try:
    # Codice che potrebbe generare NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Si è verificato un errore: {e}")
    print(f"Tipo di errore: {type(e)}")
# Qui e non è più disponibile, e la prossima riga genererà NameError
# print(e)  # NameError: name 'e' is not defined

Se vuoi fare qualcosa di importante con l'eccezione al di fuori del suo blocco, allora devi memorizzarla in una variabile separata. Esempio:


exception = None
try:
    # Codice che potrebbe generare un'eccezione
    result = int("abc")
except ValueError as e:
    exception = e
    print("Errore: valore non corretto.")
except ZeroDivisionError as e:
    exception = e
    print("Errore: divisione per zero.")

print(exception)

Nota che la variabile exception conserva l'ultima eccezione generata, il che può essere utile per ulteriori elaborazioni al di fuori del blocco try.

4.3 Cosa c'è di utile nell'errore

L'oggetto eccezione contiene informazioni sull'errore. A seconda del tipo di eccezione, l'oggetto può contenere diversi attributi.

Ecco alcuni attributi comuni disponibili per la maggior parte delle eccezioni:

  • args: Una tupla contenente gli argomenti passati durante la creazione dell'eccezione. Di solito è il messaggio di errore.
  • message: Una stringa contenente il messaggio di errore (in alcune eccezioni).
  • __str__: Metodo che restituisce una rappresentazione stringa dell'eccezione. Questo metodo viene utilizzato per ottenere una rappresentazione testuale dell'errore che verrà restituita quando si utilizza la funzione print() sull'oggetto eccezione.

Esempio:


try:
    # Codice che potrebbe generare ValueError
    result = int("abc")
except ValueError as e:
    print(f"Si è verificato un errore: {e}")
    print(f"Argomenti dell'errore: {e.args}")
    print(f"Messaggio di errore: {str(e)}")

Esempio di gestione di più eccezioni


try:
    # Codice che potrebbe generare diversi tipi di eccezioni
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"Si è verificato un errore: {e}")
    print(f"Tipo di errore: {type(e)}")
    print(f"Argomenti dell'errore: {e.args}")

Se si verifica un ValueError o un ZeroDivisionError, verrà catturato dal blocco except. Le informazioni sull'eccezione saranno accessibili tramite la variabile e. L'output conterrà il tipo di errore e gli argomenti passati durante la creazione dell'eccezione.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION