如果您知道异常处理代码将需要使用该值,那么通常将其传递给异常是一种更干净的设计。但是,如果要编写调试器或类似的东西,则需要在不事先知道变量的情况下访问变量,则
可以 在引发异常的上下文中访问任意变量:
def myfunction(): v1 = get_a_value() raise Exception()try: myfunction()except: # can I access v1 from here? v1 = inspect.trace()[-1][0].f_locals['v1']
模块文档中介绍了该功能的
trace功能及其
traceback处理的对象的格式。
inspect