Beispiel 1: Drucken Sie Stacktrace in Python, indem Sie das Traceback-Modul verwenden
In diesem Beispiel verwenden wir ein einfaches Stück Code, um zu demonstrieren, wie das Traceback-Modul von Python implementiert wird, um den Stack-Trace zu drucken. Dieses Trackback-Paket enthält eine beliebte Funktion zum Sammeln, Speichern und Anzeigen der Stack-Traces von Computersprachen. Es dupliziert originalgetreu die Stack-Trace-Druckvorgänge eines Skripts. Wenn Sie jemals den Stack-Trace anzeigen müssen, ist dies unerlässlich.
Mit anderen Worten, ein Stack-Trace zeigt jeden Vorgang an, der vor dem aufgetreten ist, der zu dem Problem geführt hat. Die wichtigsten Informationen werden immer in der letzten Zeile eines Stack-Trace gemeldet, wenn der Fehler identifiziert wird. Alle Funktionsaufrufe im resultierenden Fehler können verwendet werden, um das Problem schnell zu lokalisieren und zu beheben.
Beginnen wir mit der Implementierung des Codes durch Importieren der Traceback-Python-Bibliothek. Dann erstellen wir in der folgenden Zeile ein Array und listen die Elemente mit einigen Werten auf. Die Werte der Array-Liste sind „7“, „8“, „9“ und „10“. Es gibt vier Werte in der Array-Liste. Diese Array-Liste wurde in der zuvor initialisierten Variablen „A“ gespeichert.
Anschließend verwenden wir in der folgenden Zeile den Begriff „try“ und den Wert „A=6“. Wir verwenden die Try-Except-Blöcke in Python, um die Ausnahmen zu verwalten. Dieser Ansatz wird verwendet, um das Skript zu schreiben, das einen Fehler im Blockheader auslösen könnte. Ausnahmen sind im Wesentlichen Fehler, ähnlich wie Syntaxfehler. Während einer Ausnahme eines Programms ist die Ausnahmebehandlung der eindeutige Vorgang des Reagierens auf die Ausnahme. Um zum Skript zurückzukehren, verwenden wir „außer“ in der nächsten Zeile.
Im Except-Block verwenden wir „traceback.print exc()“, was kurz für „printing exception“ steht. Wir verwenden die Funktion „print()“ innerhalb des Ausnahmefelds „Programmende“, damit diese Anweisung gedruckt wird, wenn die Ausnahme auftritt. Wenn nun eine Ausnahme in der try-Box auftritt, geht das Programm sofort zu den except-Blöcken und fährt fort. Wenn keine Ausnahme auftritt, wird der Ausnahmeblock vollständig übersprungen. Jetzt, da die Ausnahme auftritt, können wir im Code sehen, dass der Wert „6“ in das Try-Feld eingegeben wurde, obwohl er nicht in der Array-Liste enthalten ist. Als Ergebnis geht der Code sofort zum Ausnahmefeld und gibt die Anweisung „Programm endet“ in der Ausgabeanzeige aus.
Die verschiedenen Funktionsaufrufe, aus denen sich der Traceback zusammensetzt, sind von unten nach oben vom neuesten zum am wenigsten aktuellen geordnet. Diese Operationen werden alle durch zweizeilige Anweisungen dargestellt. Jeder Aufruf beginnt mit dem Dateinamen, der Sequenznummer und dem Modulnamen, die alle den Speicherort des Codes angeben. Danach wird die Ausnahmedruckanweisung „Programmende“ angezeigt, da der Wert „6“ nicht in der deklarierten Liste enthalten war, was zur Ausgabe „Listenindex außerhalb des Bereichs“ führt.
Beispiel 2: Drucken Sie Stacktrace in Python, indem Sie die Methode Logging.Exception() verwenden
In diesem Beispiel demonstrieren wir, wie Sie die Methode „logging.exception()“ von Python verwenden, um einen Stacktrace auszugeben. Mit dem Protokollierungspaket in Python können wir die Fehler protokollieren sowie die Fehler und Ausnahmen aufzeichnen. Protokollierungsmodule bieten uns eine Auswahl an Protokollierungsmodulen, darunter „Debug“, „Info“, „Warnung“, „Fehler“ und „Kritisch“. Dies sind im Wesentlichen Ebenen von Protokollierungsmodulen, um es einfach auszudrücken. Um eine Ausnahme mit einem Fehler in Python zu protokollieren, verwenden Sie die Funktion „logging.exception()“. Diese Funktion fügt diesem Logger einen Report mit dem Status ERROR hinzu. Es wird angenommen, dass die Parameter zum Debuggen dienen. Die Information über die Ausnahme wird dem Logging-Bericht beigefügt. Die einzige Stelle, von der aus diese Prozedur aufgerufen werden kann, sollten die Ausnahmehandler sein.
Schauen wir uns nun den Code an. Zuerst importieren wir zwei Bibliotheken – die erste ist die Protokollierung und die zweite Traceback. Dann verwenden wir die „basicConfig“-Methode mit „logging“ und geben die Ebene als „logging.Debug“ an. Das einzige Argument, das die Methode „getLogger()“ akzeptiert, ist „name“. Daher verwenden wir es, wenn wir die Funktion „logging.getlogger“ verwenden. Wenn ein Name angegeben wird, wird eine Referenz auf eine Logger-Instanz mit diesem Namen generiert; andernfalls wird die Wurzel zurückgegeben. Auf dasselbe Logger-Objekt wird von vielen getLogger()-Operationen mit derselben Identität verwiesen.
Dann verwenden wir to try, und wie wir im try-Block wissen, schreiben wir den Code, der eine Ausnahme auslösen könnte. In diesem Fall verwenden wir „myfunction()“. Wenn die gegebene Situation nicht übereinstimmt, tritt eine Ausnahme auf. Dann springt der Code sofort zum Except-Block. In diesem Ausnahmeblog verwenden wir „logging.info“. Darin schreiben wir die Nachricht, die wir drucken möchten, nämlich „Ausnahme aufgetreten“. Dies liegt daran, dass im Falle einer Ausnahme einfach ein Fehler auftritt und diese Meldung auf dem Bildschirm angezeigt wird. Tritt der Fehler jedoch nicht auf, wird die gesamte Ausnahmemeldung ignoriert.
Wir setzen auch das „exc info=True“ mit der Nachricht. Der gesamte Stacktrace wird in das Logging aufgenommen, wenn exc info auf True gesetzt wird, ähnlich wie bei „logger.exception()“. Der einzige Unterschied besteht darin, dass Sie die Protokollebene schnell von Fehler auf etwas anderes umschalten können, indem Sie einfach den Logger austauschen.
Da nun im Skript eine Ausnahme aufgetreten ist, ist die erste Ausgabezeile die Meldung „Ausnahme hat stattgefunden“, gefolgt von der Protokollierungsebene, die im Skript verwendet wurde, nämlich „Info“. Der Name des Loggers erscheint in diesem Fall als Root. Dann erscheint der Traceback-Aufruf und zeigt die Modul-, Zeilen- und Dateinamen an. Schließlich ist die Fehlermeldung „myfunction“ nicht definiert.
Lassen Sie uns über etwas mehr Code sprechen, der die Protokollierung verwendet. Die Methode exception() beginnt mit dem Importieren der Bibliothek für die Protokollierung. Als nächstes werden zwei Variablen – „m“ und „n“ – initialisiert und mit den Werten „7“ bzw. „0“ versehen. Der try-Block wird nun im nächsten Schritt verwendet. Darin schreiben wir den Code, der eine Ausnahme verursachen könnte. Zuerst deklarieren wir die Variable „o“. Dann setzen wir das „m“ dividiert durch „n“. Dies führt zu einer Ausnahme, da der Nenner Null ist und wir keine Zahl durch Null teilen können, was bedeutet, dass die Fehler auftreten. Als Ergebnis springt der Code zum Except-Block, wo „logging.error“ verwendet wird. Fehler ist die Ebene der Protokollierung. Wenn eine Ausnahme auftritt, drucken wir eine Nachricht oder Anweisung mit der Aufschrift „Ausnahme aufgetreten“ und wir setzen „exc info=true“. Wenn wir es nicht auf true setzen, wird nur der Ausnahmeblock gedruckt und die Traceback-Informationen werden nicht angezeigt.
Da wir in unserem Skript die Ebene „ERROR“ gewählt haben, zeigt es zuerst den Stamm als Namen des Loggers an, gefolgt von der Meldung „Ausnahme aufgetreten“. Die Traceback-Informationen, die den Dateinamen, die Zeilennummer und das Modul enthalten, werden dann angezeigt. Die nächste Zeile zeigt dann einen Fehlerhinweis, da der Nenner nicht Null sein darf. Und da der Nenner in diesem Code Null ist, wird der Fehler als Nullteilerfehler bezeichnet.
Fazit
In diesem Artikel haben wir uns den Vorgang zum Drucken eines Stacktrace in einem Python-Protokoll sowie die Verwendung des Traceback-Moduls zum Erstellen eines Stacktrace angesehen. Im ersten Beispiel wurde die Traceback-Bibliothek importiert und die try- und except-Methoden verwendet. Der Code wurde in die Try-Box geschrieben. Wenn eine Ausnahme auftritt, springt es schnell zum Ausnahmeblock und zeigt die Ausnahmeanweisung auf dem Bildschirm an. Im zweiten Beispiel haben wir die Protokollierung ähnlich wie im ersten Beispiel verwendet. Die Methode exception() verwendet die Protokollierungsebenen „info“ und „error“. Wenn eine Ausnahme auftritt, wird eine Ausnahmeanweisung angezeigt.