alf*_*eza 4 python exception evaluate
我正在尝试对回溯进行一些精心的重新检查,并从未能返回更多(更好?)信息的对象中获取实际值以及回溯.
案例场景是在我导入和执行的函数中,如下所示:
def foo():
a = True
b = False
assert a == b
Run Code Online (Sandbox Code Playgroud)
并执行如下:
from foo import foo
def re_inspect():
try:
foo()
except Exception, e:
# re-inspect traceback and check `a` and `b`
Run Code Online (Sandbox Code Playgroud)
当AssertionError引发提升时,如果我尝试评估引发异常的行,我(当然)无法分辨出什么a或是b(NameError立即引发)因为我缺少代码的上下文.
请注意我无权访问,a也不会b导入上面的代码然后执行.由于foo不存在于当前名称空间中,我的问题依赖于从foo上下文中获取正确的值.
什么是正确的方法,能够告诉什么a,b以便y可以安全地说出类似:"一个是真的,是假的"?
您可以使用检查模块:
try:
foo()
except AssertionError, e:
import inspect
previous_trace = inspect.trace()[1]
frame = previous_trace[0]
print 'value of a, b:', inspect.getargvalues(frame).locals
Run Code Online (Sandbox Code Playgroud)
请参阅http://docs.python.org/library/inspect.html#inspect.getargvalues
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |