久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

python - 如何獲取異常時棧中的數(shù)值

瀏覽:134日期:2022-07-04 17:40:14

問題描述

假設(shè)有這樣一段代碼:

try: a = 1 b = 0 c = a / bexcept Exception as e: print(e)

現(xiàn)在想在異常發(fā)生時獲取到異常發(fā)生前每個變量的數(shù)值,即獲取到a=1,b=0這樣的結(jié)果。

問題解答

回答1:

inspect.currentframe

>>> import inspect>>> a=1;b=0;a/bTraceback (most recent call last): File '<pyshell#10>', line 1, in <module> a=1;b=0;a/bZeropisionError: pision by zero>>> f=inspect.currentframe()>>> f.f_globals[’a’]1>>> f.f_globals[’b’]0>>> 回答2:

這個python應(yīng)該是沒法主動實(shí)現(xiàn)的, 因為如果有這樣的方法, 在多層調(diào)用時, 出現(xiàn)了異常, 一層層記錄相應(yīng)的數(shù)據(jù)然后再返回, 那么這很可能會導(dǎo)致內(nèi)存方面的問題; 而且在出現(xiàn)異常前, 虛擬機(jī)也不知道你會問題, 就好像你上面的除零異常, 是在運(yùn)行 a/b => 1/0, 在PyIntobjecti_pmod函數(shù)代碼實(shí)現(xiàn)中, 判斷出除數(shù)為0, 直接觸發(fā)異常, 然后一層層棧返回, 告訴用戶出現(xiàn)異常, 在try_block中也并沒有記錄符號的值相關(guān)的代碼, 所以頂多人為在except中, 做出更加精細(xì), 人性化的輸出了

回答3:

使用ipython 把pdb打開,可以做到報哪一行出錯!

ZeropisionError: integer pision or modulo by zero> <ipython-input-4-a5ac4c0f15ad>(4)<module>() 1 2 a = 1 3 b = 0----> 4 c = a / bipdb> 回答4:

pdb

加入代碼如下:

#!/usr/bin/env python# encoding: utf-8try: a = 1 b = 0 c = a / bexcept Exception as e: import pdb; pdb.set_trace() # <-- 加入斷點(diǎn) print(e)

執(zhí)行如下:

? python sf.py> /Users/caimaoy/tmp/sf.py(10)<module>()-> print(e)(Pdb) ll 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 try: 5 a = 1 6 b = 0 7 c = a / b 8 except Exception as e: 9 import pdb; pdb.set_trace() 10 -> print(e)(Pdb) p a1(Pdb) p b0(Pdb)

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 伊人成人222| 国产午夜手机精彩视频 | 久久男人天堂 | 亚洲国产精品成人综合色在线婷婷 | 国产精品久久久一区二区三区 | 亚洲国产精品一区 | 免费国产一区二区 | 欧美精品福利视频 | 精品国产欧美一区二区三区成人 | 国产精品一区人伦免视频播放 | 国产日韩中文字幕 | 久久网一区二区三区 | 国产精品爱久久久久久久 | 99亚洲精品 | 日韩视频一区二区三区四区 | 青青久久 | 国产在线专区 | 日韩视频在线观看一区二区 | 国产精品国色综合久久 | 日本高清视频网站www | 视频在线一区 | 日韩在线视频精品 | 午夜国产影院 | 欧美一区二区大片 | 国产综合精品 | 国产精品久久久久久久久免费丝袜 | 国产97久久 | 91精品国产综合久久久久久 | 国产日韩亚洲欧美 | 国产欧美在线视频 | 日韩精品一区二区三区四区视频 | 夜夜精品视频 | 一级在线免费视频 | 超碰97人人人人人蜜桃 | 国产一区二区三区四 | 久久久久一区二区 | 精品久久久蜜桃 | 免费av在线网站 | 成人免费xxx在线观看 | a级毛片免费高清视频 | 国产久|