2
在Python,我有一些代碼捕獲異常,例如:的Python:sys.exc_info()缺少局部變量
try:
<do stuff>
except:
exc_info = sys.exc_info()
我遇到的問題是,回溯對象(exc_info [ 2])在追蹤對象中非確定性地缺少局部變量。我知道這是事實,因爲我運行完全相同的代碼,有時變量位於tb.tb_frame.f_locals中,有時不是。全局變量在tb.tb_frame.f_globals中總是正確的。
什麼是填充f_locals結構?什麼可能導致局部變量字典有時是空的?
這聽起來像你的代碼中必須有一些非確定性。主題?網絡I/O?什麼? – 2010-06-08 22:41:37
我同意奈德; tb_frame實際上是調用代碼的框架,如果變量不存在,那麼它不會被設置。那麼請注意,重新提出的異常會保留它們的tb對象,所以也許框架並未指向您認爲的範圍? – 2010-06-09 04:22:31