La funzione sys.exc_info()

Nel linguaggio python l'istruzione exc_info() mi permette di ottenere informazioni sugli errori e sulle eccezioni che si verificano durante l'esecuzione di uno script. La funzione exc.info() si trova nel modulo sys.

La sintassi

import sys
sys.exc_info()

A cosa serve?

La funzione exc_info() restituisce le informazioni sull'ultima eccezione.

E' particolarmente utile nella gestione degli errori imprevisti tramite una struttura try except.

Nota. Essendo una funzione di una libreria esterna (sys), per poterla utilizzare in uno script python devo prima importare il modulo della libreria tramite l'istruzione import o from import.

    Un esempio pratico

    In questo script uso la struttura try except per eseguire una divisione ( riga 3 ).

    1. import sys
    2. try:
    3. c=a/b
    4. except:
    5. print("c'è un problema")
    6. print(sys.exc_info())
    7. print(sys.exc_info()[0])
    8. print(sys.exc_info()[1])
    9. print(sys.exc_info()[2])

    Durante l'esecuzione della riga 3 potrebbero però verificarsi diversi errori.

    Ad esempio, divisione per zero, valore non numerico, variabile non documentata, ecc.

    Con una generica clausola except intercetto qualsiasi tipo errore.

    Poi cerco di capire di quale eccezione si tratta tramite l'istruzione sys.exc_info().

    L'output dello script è il seguente:

    c'è un problema
    (<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x02DDB8C8>)
    <class 'ZeroDivisionError'>
    division by zero
    <traceback object at 0x02DDB8C8>

    L'istruzione exc_info() mi fornisce una lista con tre informazioni molto utili:

    • il tipo di errore ( ultima eccezione )
    • la voce dell'eccezione
    • il traceback dell'oggetto

    Cos'è il traceback? E' un oggetto che mi permette di visualizzare lo stack del programma nel momento in cui si verifica l'eccezione.

    Elaborando queste informazioni, posso gestire qualsiasi eccezione dentro lo script ed evitare un errore imprevisto del programma.

    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()