Andaikan terdapat sekeping kod seperti ini:
try:
a = 1
b = 0
c = a / b
except Exception as e:
print(e)
Sekarang saya ingin mendapatkan nilai setiap pembolehubah sebelum pengecualian berlaku apabila pengecualian berlaku, iaitu, dapatkan keputusan seperti a=1, b=0.
inspect.currentframe
Ular sawa ini tidak sepatutnya dapat melaksanakan secara aktif, kerana jika terdapat kaedah sedemikian, pengecualian berlaku semasa panggilan berbilang lapisan, dan data yang sepadan direkodkan lapisan demi lapisan dan kemudian dikembalikan, maka ini mungkin menyebabkan masalah masalah ingatan; dan sebelum pengecualian berlaku, mesin maya tidak tahu bahawa anda mempunyai masalah, sama seperti pengecualian bahagian-dengan-sifar anda di atas sedang berjalan a/b => #, dalam# Dalam pelaksanaan i_pmod kod fungsi 🎜🎜#PyIntobject, ia dinilai bahawa pembahagi ialah 0, pengecualian dicetuskan terus, dan kemudian timbunan adalah mengembalikan lapisan demi lapisan untuk memaklumkan pengguna bahawa pengecualian telah berlaku, yang turut disertakan dalam try_block Tiada kod yang berkaitan dengan nilai simbol yang direkodkan, jadi kebanyakan orang boleh membuat output yang lebih tepat dan berperikemanusiaan dalam kecuali
Gunakan ipython untuk membuka pdb, dan anda boleh melaporkan baris mana yang mempunyai ralat!
pdb
Tambah kod berikut:
Laksanakan seperti berikut: