Menangkap pengecualian yang akan dicetak seperti ini:
Traceback (most recent call last):
File "c:/tmp.py", line 1, in <module>
4 / 0
ZeroDivisionError: integer division or modulo by zero
Saya ingin memformatnya menjadi:
ZeroDivisonError, tmp.py, 1
python
exception
stack-trace
traceback
Claudiu
sumber
sumber
Jawaban:
sumber
sys.exc_info()
diperkenalkan untuk menangani masalah keamanan benang di API sebelumnya. Keluarannya khusus untuk utas saat ini dan bingkai tumpukan saat ini.Bentuk paling sederhana yang bekerja untuk saya.
Keluaran
sumber
Sumber (Py v2.7.3) untuk traceback.format_exception () dan dipanggil / fungsi terkait sangat membantu. Yang memalukan, saya selalu lupa untuk Baca Sumber . Saya hanya melakukannya untuk ini setelah mencari detail serupa dengan sia-sia. Sebuah pertanyaan sederhana, "Bagaimana cara membuat kembali output yang sama dengan Python sebagai pengecualian, dengan semua detail yang sama?" Ini akan membuat siapa pun 90 +% untuk apa pun yang mereka cari. Frustrasi, saya datang dengan contoh ini. Saya harap ini membantu orang lain. (Ini benar-benar membantu saya! ;-)
Dalam jawaban spesifik untuk pertanyaan ini:
sumber
'message' : exc_value.message
ke'message' : str(exc_value)
untuk py3Berikut adalah contoh yang menunjukkan nomor baris tempat pengecualian terjadi.
sumber