可以用Python创建自定义回溯吗?我试图编写一个函数raise_from()
,它模仿python3的raise ... from ...
。在
def raise_from(exc, cause):
""" Raises the Exception *exc* from the calling stack-frame,
settings its ``__cause__`` to *cause*. """
exc.__cause__ = cause
try: raise Exception
except Exception:
tb = sys.exc_info()[2]
# Remove the last traceback entry.
prelast_tb = tb
while prelast_tb.tb_next:
prelast_tb = prelast_tb.tb_next
prelast_tb.tb_next = None
raise type(exc), exc, tb
不幸的是,traceback
实例的属性是只读的。在
您不必修改异常的原始对象实例,只需使用trace-back对象的格式函数将其转换为更简单的格式,如list。定制回溯列表后,将其转换回与原始列表相同的可打印字符串:
所以,您只需要将trace的定制版本打印回所需的文件(包括stdout,…)
但如果要覆盖回溯对象的原始属性,则应通过自定义插槽或重写类的@property字段来重写回溯对象。在
相关问题 更多 >
编程相关推荐