Registra un errore con le informazioni di debug in Python
-
Usa il metodo
exception()
per registrare un errore con informazioni dettagliate sul debug in Python -
Usa il metodo
exception()
constack_info
per registrare un errore con informazioni di debug dettagliate in Python 3.2+ -
Usa il metodo
exception()
conexc_info
per registrare un errore con informazioni di debug dettagliate in Python 3.5+
Questo articolo spiega come registrare un errore con informazioni di debug dettagliate in Python.
Per visualizzare informazioni di debug dettagliate, importa la libreria logging
in Python e utilizza il metodo logging.exception()
. Verrà visualizzato il messaggio di errore e la traccia dello stack.
Sappiamo che la stringa di eccezione ti aiuterà a capire l’errore esatto che si è verificato in Python. Oltre a questo, possiamo determinare informazioni dettagliate sull’eccezione e sulla riga di codice che ha generato l’eccezione.
Chiama il metodo logging.exception()
all’interno del blocco di codice except
; questo aiuta a visualizzare una traccia dello stack con il messaggio di errore. Su questo registratore registra il messaggio con il livello ERROR
. Le informazioni sull’eccezione vengono aggiunte al messaggio di registrazione.
Usa il metodo exception()
per registrare un errore con informazioni dettagliate sul debug in Python
Ecco un esempio che dimostra come registrare un errore con informazioni di debug dettagliate in Python.
import logging
def fnc_divide(n):
try:
result = n / 0
print("The result=", result)
except:
print("The except block")
logging.exception("The detailed error message -")
fnc_divide(5)
Produzione:
The except block
ERROR:root:The detailed error message -
Traceback (most recent call last):
File "C:/Users/../a.py", line 4, in fnc_divide
result=n/0
ZeroDivisionError: division by zero
Si noti che nell’output vengono visualizzate le informazioni dettagliate relative all’errore come elencato di seguito.
- Menziona il modulo/funzione in cui si è verificato l’errore. In questo esempio, l’output mostra che l’errore si è verificato all’interno del metodo
fnc_divide()
. - Indica il numero di riga in cui si è verificato l’errore. In questo esempio, l’output mostra che l’errore si è verificato sulla riga numero 4.
- Menziona l’errore esatto. In questo esempio, è
ZeroDivisionError: division by zero
.
Usa il metodo exception()
con stack_info
per registrare un errore con informazioni di debug dettagliate in Python 3.2+
Da Python 3.2+, puoi passare l’argomento stack_info
come True
. Mostra come sei arrivato a un punto particolare nel codice; questo vale anche quando non vengono sollevate eccezioni.
Se stack_info
è True
, le informazioni sullo stack vengono aggiunte al messaggio di registrazione, più la chiamata di registrazione effettiva, e sono associate ai frame dello stack in ordine. L’ordine va dal fondo dello stack fino alla chiamata di registrazione nel thread corrente.
Guarda questo codice di esempio qui sotto.
import logging
def fnc_dividestack(n):
try:
result = n / 0
except Exception:
logging.exception("The detailed error message -", stack_info=True)
fnc_dividestack(4)
Produzione:
ERROR:root:The detailed error message -
Traceback (most recent call last):
File "C:/Users/Ri..error.py", line 5, in fnc_dividestack
result=n/0
ZeroDivisionError: division by zero
Stack (most recent call last):
File "C:/Users/Ri..error.py", line 9, in <module>
fnc_dividestack(4)
File "C:/Users/Ri..error.py", line 7, in fnc_dividestack
logging.exception("The detailed error message -", stack_info=True)
Usa il metodo exception()
con exc_info
per registrare un errore con informazioni di debug dettagliate in Python 3.5+
Da Python 3.5+, puoi passare un’istanza di eccezione nell’argomento exc_info
. Questo parametro accetta istanze di eccezione.
Nota che la tupla exc_info
contiene le informazioni sull’eccezione corrente se si verifica un’eccezione; altrimenti, tiene None
. Di seguito è riportato un esempio che dimostra questo processo.
import logging
def fnc_divide(n):
try:
result = n / 0
print("The result=", result)
except Exception as e:
logging.exception("The exc_info - Zero Division error", exc_info=e)
fnc_divide(5)
Produzione:
ERROR:root:The exc_info - Zero Division error
Traceback (most recent call last):
File "C:/Users/R..ror.py", line 4, in fnc_divide
result=n/0
ZeroDivisionError: division by zero