将追踪信息转换为异常的库?

0 投票
1 回答
189 浏览
提问于 2025-04-11 09:30

我有个好奇的问题:有没有现成的代码可以把打印出来的错误信息转换回导致这个错误的异常?或者转换成类似于sys.exc_info的结构?

1 个回答

2

把错误追踪信息转换成异常对象其实并不难,主要是看一些常见的异常类(可以解析最后一行来获取异常类和创建它时传入的参数)。不过,错误追踪对象(通过sys.exc_info()返回的第三个参数)就完全是另一回事了。这个错误追踪对象实际上包含了在发生异常时,堆栈中所有的帧对象链条。里面包括了局部变量、全局变量等等。仅仅通过显示的错误追踪信息是无法重建这些内容的。

你能做的最好就是解析每一行像'File "X", line N, in Y:'这样的信息,然后创建一些几乎是空的假帧对象。这样做的价值不大,因为你基本上只能用它来打印出来。你到底想达到什么目的呢?

撰写回答