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. )
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
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