根据我使用 Java 编程的经验,当我的代码出错时,我非常喜欢它生成的堆栈跟踪,但相比之下,我觉得 python 生成的堆栈跟踪有点欠缺。例如,Java 中的跟踪可能如下所示:
java.lang.RuntimeException
at test.package.Example.c(Example.java:20)
at test.package.Example.b(Example.java:15)
at test.package.Example.a(Example.java:10)
而 python 跟踪可能看起来像这样:
Traceback (most recent call last):
File "example.py", line 10, in <module>
a()
File "example.py", line 2, in a
b()
File "example.py", line 5, in b
c()
File "example.py", line 8, in c
raise Exception
Exception
虽然这两种跟踪传达的信息基本相同,但我个人发现来自 java 的跟踪更容易理解。
有没有办法更改 python 用于打印其堆栈跟踪的格式,或者这种更改是否需要我在程序的根目录下创建自定义异常处理程序?
请您参考如下方法:
使用 traceback模块
import traceback
try:
x= 1/0
except Exception as e:
print(e)
traceback.print_exc()
