Python mencetak pesan pengecualian traceback

Modul ini menyediakan antarmuka standar untuk mengekstrak, memformat, dan mencetak jejak tumpukan program Python. Itu persis meniru perilaku juru bahasa Python ketika mencetak jejak tumpukan. Ini berguna saat Anda ingin mencetak pelacakan tumpukan di bawah kendali program, seperti di "pembungkus" di sekitar juru bahasa

Modul ini menggunakan objek traceback — ini adalah tipe objek yang disimpan dalam variabel (tidak digunakan lagi) dan dan dikembalikan sebagai item ketiga dari

Modul ini mendefinisikan fungsi-fungsi berikut

pelacakan balik. print_tb(traceback [ , batasi [ , berkas ]])

Cetak hingga batas entri pelacakan tumpukan dari traceback. Jika batas dihilangkan atau Tidak ada , semua entri akan dicetak. Jika file dihilangkan atau Tidak ada , hasilnya akan menjadi sys. stderr ; .

pelacakan balik. print_exception(type, value, traceback [ , batasi [ , berkas ]])

Mencetak informasi pengecualian dan hingga membatasi entri pelacakan tumpukan dari traceback ke file. Ini berbeda dengan cara-cara berikut. (1) jika traceback bukan None , ia akan mencetak header Traceback . recent call last): ; .

pelacakan balik. print_exc( [ batas [ , berkas ]])

Ini adalah singkatan untuk print_exception(sys. exc_type, sys. exc_value, sys. exc_traceback, batas, file) . (Faktanya, ini digunakan untuk mengambil informasi yang sama dengan cara yang aman daripada menggunakan variabel yang tidak digunakan lagi. )

pelacakan balik. format_exc( [ batas ])

Ini seperti print_exc(limit) tetapi mengembalikan string alih-alih mencetak ke file.

Baru di versi 2. 4

pelacakan balik. print_last( [ batas [ , berkas ]])

Ini adalah singkatan untuk print_exception(sys. last_type, sys. last_value, sys. last_traceback, batas, file) . Secara umum ini hanya akan berfungsi setelah pengecualian mencapai Prompt interaktif (lihat ).

pelacakan balik. print_stack( [ f [ , batasi [ , file ]]])

Fungsi ini mencetak jejak tumpukan dari titik pemanggilannya. Argumen f opsional dapat digunakan untuk menentukan bingkai tumpukan alternatif untuk memulai. Batas opsional dan argumen file memiliki arti yang sama dengan for

pelacakan balik. extract_tb(traceback [ , batasi ])

Mengembalikan daftar hingga batas entri pelacakan tumpukan yang “diproses sebelumnya” yang diekstraksi dari objek traceback traceback. Ini berguna untuk pemformatan alternatif dari jejak tumpukan. Jika batas dihilangkan atau Tidak ada , semua entri diekstrak. Entri pelacakan tumpukan "diproses sebelumnya" adalah empat kali lipat (nama file, nomor baris, nama fungsi, teks) yang mewakili informasi yang biasanya dicetak untuk pelacakan tumpukan. Teks adalah string dengan spasi kosong di depan dan di belakang; . None.

pelacakan balik. extract_stack( [ f [ , batasi ]])

Ekstrak traceback mentah dari bingkai tumpukan saat ini. Nilai pengembalian memiliki format yang sama seperti untuk. Argumen f dan limit opsional memiliki arti yang sama dengan untuk

melacak kembali. format_daftar(daftar)

Diberikan daftar tupel sebagai dikembalikan oleh atau , kembalikan daftar string yang siap untuk dicetak. Setiap string dalam daftar hasil sesuai dengan item dengan indeks yang sama dalam daftar argumen. Setiap string diakhiri dengan baris baru; . None.

melacak kembali. format_exception_only(jenis, nilai)

Format bagian pengecualian dari traceback. Argumennya adalah tipe dan nilai pengecualian seperti yang diberikan oleh sys. last_type dan sys. nilai_terakhir . Nilai kembalian adalah daftar string, masing-masing diakhiri dengan baris baru. Biasanya, daftar berisi string tunggal; . Pesan yang menunjukkan pengecualian mana yang terjadi selalu merupakan string terakhir dalam daftar.

pelacakan balik. format_exception(jenis, nilai, tb [ , batasi ])

Memformat pelacakan tumpukan dan informasi pengecualian. Argumen memiliki arti yang sama dengan argumen yang sesuai. Nilai yang dikembalikan adalah daftar string, masing-masing diakhiri dengan baris baru dan beberapa berisi baris baru internal. Ketika baris-baris ini digabungkan dan dicetak, teks yang sama persis dicetak seperti halnya

pelacakan balik. format_tb(tb [ , batasi ])

Singkatan untuk format_list(extract_tb(tb, limit)) .

pelacakan balik. format_stack( [ f [ , batasi ]])

Singkatan untuk format_list(extract_stack(f, limit)) .

melacak kembali. tb_lineno(tb)

Fungsi ini mengembalikan nomor baris saat ini yang diatur dalam objek traceback. Fungsi ini diperlukan karena dalam versi Python sebelum 2. 3 saat flag diteruskan ke Python, tb. tb_lineno tidak diperbarui dengan benar. Fungsi ini tidak digunakan dalam versi 2 yang lalu. 3.

27. 10. 1. Contoh Lacak Balik

Contoh sederhana ini mengimplementasikan loop read-eval-print dasar, mirip dengan (namun kurang berguna daripada) loop interpreter interaktif Python standar. Untuk implementasi loop juru bahasa yang lebih lengkap, lihat modul

import sys, traceback

def run_user_code(envdir):
    source = raw_input(">>> ")
    try:
        exec source in envdir
    except:
        print "Exception in user code:"
        print '-'*60
        traceback.print_exc(file=sys.stdout)
        print '-'*60

envdir = {}
while 1:
    run_user_code(envdir)

Contoh berikut menunjukkan berbagai cara untuk mencetak dan memformat pengecualian dan traceback

Bagaimana cara mencetak pengecualian traceback dengan Python?

Metode ini mencetak informasi pengecualian dan entri pelacakan tumpukan dari objek traceback tb ke file. .
Sintaksis. melacak kembali. print_exception(etype, value, tb, limit=None, file=None, chain=True)
Parameter. Metode ini menerima parameter berikut
Kembali. Tidak ada

Bagaimana cara mencetak pesan pengecualian kecuali Python?

Untuk menangkap dan mencetak pengecualian yang terjadi dalam cuplikan kode, bungkus kode tersebut dalam blok coba yang terindentasi, diikuti dengan perintah "kecuali Pengecualian sebagai e" that catches the exception and saves its error message in string variable e . You can now print the error message with "print(e)" or use it for further processing.

Bagaimana cara mencetak backtrace dengan Python?

Bagaimana Cara Mencetak Stack Trace dengan Python? .
melacak kembali. print_exc(batas=Tidak ada, file=Tidak ada, rantai=Benar)
impor traceback coba. x = 8/0 cetak(x) kecuali. print("Kesalahan Pembaruan. ") melacak kembali. print_exc() print("Eksekusi Program Berhasil")

Bagaimana cara menggunakan %tb dengan Python?

print_tb(tb, limit = Tidak ada, file = Tidak ada) . Jika batasnya positif, ia mencetak hingga batas entri jejak tumpukan dari objek traceback tb. Jika tidak, cetak entri abs(limit) terakhir. Jika batas dihilangkan atau Tidak ada, semua entri akan dicetak. Jika file dihilangkan atau Tidak ada, hasilnya masuk ke sys.