Saya tahu bahwa print(e)
(di mana e adalah Pengecualian) mencetak pengecualian yang terjadi tetapi, saya mencoba untuk menemukan python yang setara dengan Java e.printStackTrace()
yang secara tepat melacak pengecualian pada baris apa yang terjadi dan mencetak seluruh jejaknya.
Adakah yang bisa tolong beri tahu saya setara dengan e.printStackTrace()
di Python?
java
python
exception
stack-trace
koool
sumber
sumber
format_exc
mendapatkan string.Ada juga
logging.exception
.Keluaran:
(Dari http://blog.tplus1.com/index.php/2007/09/28/the-python-logging-module-is-much-better-than-print-statements/ melalui Cara mencetak traceback penuh tanpa menghentikan program? )
sumber
traceback.print_exc()
?Di Jawa, ini melakukan yang berikut ( dokumen ):
Ini digunakan seperti ini:
Di Jawa, aliran Kesalahan Standar tidak dibatalkan sehingga output segera tiba.
Semantik yang sama dalam Python 2 adalah:
Python 3
Dalam Python 3, kita bisa mendapatkan traceback langsung dari objek pengecualian (yang mungkin berperilaku lebih baik untuk kode ulir). Juga, stderr adalah buffer-line , tetapi fungsi cetak mendapat argumen flush, jadi ini akan segera dicetak ke stderr:
Kesimpulan:
Dalam Python 3, oleh karena itu,
traceback.print_exc()
meskipun digunakansys.stderr
secara default , akan buffer output, dan Anda mungkin kehilangan itu. Jadi untuk mendapatkan semantik yang sederajat mungkin, dengan Python 3, gunakanprint
denganflush=True
.sumber
Menambah jawaban besar lainnya, kita dapat menggunakan Python
logging
perpustakaandebug()
,info()
,warning()
,error()
, dancritical()
metode. Mengutip dari dokumen untuk Python 3.7.4 ,Artinya, Anda bisa menggunakan
logging
pustaka Python untuk menampilkan adebug()
, atau jenis pesan lainnya, danlogging
pustaka akan menyertakan jejak stack dalam outputnya. Dengan mengingat hal ini, kita dapat melakukan hal berikut:Dan itu akan menampilkan:
sumber