e.printStackTrace entspricht in Python
Ich weiß, dass print(e)
(wobei e eine Ausnahme) druckt die Ausnahme aufgetreten ist
aber, ich war versuchen zu finden, das python-äquivalent zu Java ist e.printStackTrace()
dass genau die Spuren die Ausnahme, was die Linie, auf der es aufgetreten ist, und druckt die gesamte Spur.
Könnte jemand bitte sagen Sie mir, das äquivalent von e.printStackTrace()
in Python?
InformationsquelleAutor der Frage koool | 2012-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sich, wenn Sie diese innerhalb einer
except ...:
block wird automatisch die aktuellen Ausnahme. Sehen http://docs.python.org/library/traceback.html für weitere Informationen.InformationsquelleAutor der Antwort ThiefMaster
Gibt es auch
logging.exception
.Ausgabe:
(Aus http://blog.tplus1.com/index.php/2007/09/28/the-python-logging-module-is-much-better-than-print-statements/ über So drucken Sie den vollständigen traceback ohne anhalten des Programms?)
InformationsquelleAutor der Antwort d3vid
In Java bedeutet dies die folgenden (docs):
Dieser wird wie folgt verwendet:
In Java, die Standard-Fehler-stream Ungepuffert, so dass die Ausgabe kommt sofort.
Die gleiche Semantik in Python 2:
Python 3
In Python 3 können Sie die traceback-direkt aus dem exception-Objekt (die wahrscheinlich verhält sich besser für threaded code).
Auch, stderr ist line-buffered, aber die drucken-Funktion bekommt
ein flush argument, so würde dies sofort gedruckt auf stderr:
Fazit:
In Python 3, daher
traceback.print_exc()
obwohl es nutztsys.stderr
standardmäßigwürde der Puffer für die Ausgabe, und Sie können möglicherweise verlieren. So als äquivalent Semantik wie möglich, in Python 3 verwenden Sieprint
mitflush=True
.InformationsquelleAutor der Antwort Aaron Hall