Esempio 1: Stampa Stacktrace in Python utilizzando il modulo Traceback
In questo esempio, useremo un semplice pezzo di codice per dimostrare come implementare il modulo Traceback di Python per stampare la traccia dello stack. Questo pacchetto di trackback include una caratteristica molto apprezzata per la raccolta, la conservazione e la mostra delle tracce dello stack dai linguaggi di computer. Duplica fedelmente le operazioni di stampa dello stack di una sceneggiatura. Se hai mai bisogno di visualizzare la traccia dello stack, è essenziale.
In altre parole, una traccia dello stack mostra ogni operazione che è arrivata prima di quella che ha portato al problema. Le informazioni più importanti sono sempre riportate sull'ultima riga di una traccia dello stack, che è quando viene identificato l'errore. Tutte le chiamate di funzione nell'errore risultante possono essere utilizzate per individuare rapidamente e risolvere il problema.
Iniziamo implementando il codice attraverso l'importazione della libreria Python Traceback. Quindi, nella riga seguente, creiamo un array ed elenchiamo gli elementi con alcuni valori. I valori dell'elenco di array sono "7", "8", "9" e "10". Ci sono quattro valori nell'elenco degli array. Questo elenco di array è stato salvato nella variabile precedentemente inizializzata "A".
In seguito, utilizziamo il termine "try" e il valore "a = 6" nella riga seguente. Utilizziamo i blocchi di try-elect in Python per gestire le eccezioni. Questo approccio viene utilizzato per scrivere lo script che potrebbe sollevare un errore nell'intestazione del blocco. Le eccezioni sono essenzialmente errori, simili agli errori di sintassi. Durante un'eccezione di un programma, la gestione delle eccezioni è l'atto unico di rispondere all'eccezione. Tornando allo script, usiamo "tranne" nella riga successiva.
Nel blocco tranne, usiamo “Traceback.Stampa Exc () "che è l'abbreviazione di" Eccezione di stampa ". Utilizziamo la funzione "Print ()" all'interno della casella di eccezione che è "Program End" in modo che questa istruzione stampica quando si presenta l'eccezione. Ora, se si verifica un'eccezione nella casella di prova, il programma si sposta immediatamente nei blocchi tranne e continua. Se non si verifica un'eccezione, il blocco di eccezione è completamente saltato. Ora che l'eccezione accade, possiamo vedere nel codice che il valore "6" è stato inserito nella casella di prova anche se non è nell'elenco degli array. Di conseguenza, il codice va immediatamente alla casella delle eccezioni e stampa l'istruzione "Program Ends" nella visualizzazione dell'output.
Le diverse chiamate di funzione che compongono il traceback sono ordinate dal più recente al meno recente, dal basso verso l'alto. Queste operazioni sono tutte rappresentate da dichiarazioni a due righe. Ogni chiamata inizia con il nome del file, il numero di sequenza e il nome del modulo, che indicano la posizione del codice. Successivamente, visualizza l'eccezione dell'istruzione di stampa "End del programma" poiché il valore "6" non era nell'elenco dichiarato, che si traduce nell'output "Elenco Indice fuori porta".
Esempio 2: Stampa Stacktrace in Python utilizzando la registrazione.Metodo eccezione ()
In questo esempio, dimostreremo come usare la registrazione di Python ".Metodo Exception () "per produrre una stacktrace. Il pacchetto di registrazione in Python ci consente di registrare gli errori e registrare gli errori e le eccezioni. I moduli di registrazione ci danno una selezione di moduli di registrazione tra cui "Debug", "Info", "Avviso", "Errore" e "Critical". Questi sono essenzialmente livelli di moduli di registrazione, per dirla semplicemente. Per registrare un'eccezione con un errore in Python, usa la "registrazione.funzione eccezione () ". Questa funzione aggiunge un report con lo stato di errore a questo logger. Si ritiene che i parametri siano per il debug. Le informazioni sull'eccezione sono allegate al rapporto di registrazione. L'unica posizione da cui invocare questa procedura dovrebbe essere i gestori di eccezione.
Ora, diamo un'occhiata al codice. Innanzitutto, importiamo due librerie - la prima delle quali è la registrazione e la seconda è Traceback. Quindi, utilizziamo il metodo "BasicConfig" con "registrazione" e specifichiamo il livello come "registrazione.Il debug ". L'unico argomento che il metodo "getlogger ()" è "nome". Pertanto, lo usiamo quando si utilizza la "registrazione.funzione getlogger ". Se viene dato un nome, viene generato un riferimento a un'istanza di logger con quel nome; Altrimenti, la radice viene restituita. Lo stesso oggetto logger è citato da molte operazioni getlogger () con la stessa identità.
Quindi, usiamo per provare e, come sappiamo nel blocco di prova, scriviamo il codice che potrebbe aumentare un'eccezione. In questo caso, usiamo "MyFunction ()". Se la situazione data non corrisponde, si verifica un'eccezione. Quindi, il codice salta immediatamente al blocco tranne. In questo blog di eccezione, utilizziamo la "registrazione.informazioni". All'interno di esso, scriviamo il messaggio che vogliamo stampare, che è "Eccezione ha avuto luogo". Questo perché se si verifica un'eccezione, si verifica semplicemente un errore, quindi visualizza questo messaggio sullo schermo. Ma se l'errore non si verifica, ignora l'intero messaggio di eccezione.
Abbiamo anche impostato "Exc Info = True" con il messaggio. L'intera stacktrace sarà inclusa nella registrazione quando le informazioni Exc sono impostate su true, simili a ciò che accade con "logger.eccezione()". L'unica distinzione è che è possibile passare rapidamente il livello di registro dall'errore a qualcos'altro semplicemente scambiando il logger.
Ora che si è verificata un'eccezione nello script, la prima riga di output è il messaggio "Eccezione ha avuto luogo" seguito dal livello di registrazione utilizzato nello script che è "Informazioni."Il nome del logger appare come radice in questo caso. Quindi, la chiamata di Traceback viene visualizzata, visualizzando i nomi del modulo, della riga e dei file. Infine, il messaggio di errore "MyFunction" non è definito.
Parliamo di qualche altro codice che utilizza la registrazione. Il metodo Eccezione () inizia importando la libreria per la registrazione. Successivamente, due variabili - "M" e "N" - vengono inizializzate e dati i valori di "7" e "0", rispettivamente. Il blocco di prova è ora utilizzato nel passaggio successivo. All'interno, scriviamo il codice che potrebbe causare un'eccezione. Innanzitutto, dichiariamo la variabile "O". Quindi, abbiamo impostato quella "M" divisa per "n". Ciò provoca un'eccezione perché il denominatore è zero e non possiamo dividere alcun numero per zero, il che significa che sorgeranno gli errori. Di conseguenza, il codice passa al blocco tranne dove "registrazione.viene utilizzato l'errore ". L'errore è il livello di registrazione. Se si verifica un'eccezione, stampiamo un messaggio o una dichiarazione che dice "Eccezione è avvenuta" e impostiamo "Exc Info = True". Se non lo impostiamo su True, stampa solo il blocco di eccezione e non visualizza le informazioni di Traceback.
Poiché abbiamo scelto il livello di "errore" nel nostro script, visualizza innanzitutto la radice come nome del logger, seguito dal messaggio "Eccezione". Vengono quindi visualizzate le informazioni di Traceback che includevano il nome del file, il numero di riga e il modulo. La riga successiva mostra quindi un avviso di errore poiché il denominatore non può essere zero. E poiché il denominatore è zero in questo codice, l'errore viene definito un errore di divisore zero.
Conclusione
In questo articolo, abbiamo esaminato il processo di stampa di uno stacktrace in un registro Python e come usare il modulo Traceback per creare una traccia dello stack. Nel primo esempio, la libreria di Traceback è stata importata e il tentativo e tranne i metodi sono stati utilizzati. Il codice è stato scritto nella casella Try. Se si verifica un'eccezione, salta rapidamente al blocco delle eccezioni e visualizza l'istruzione di eccezione sullo schermo. Nel secondo esempio, abbiamo utilizzato la registrazione simile al primo esempio. Il metodo Eccezione () utilizza i livelli di registrazione "Informazioni" e "Errore". Se si verifica un'eccezione, visualizza un'istruzione di eccezione.