我是python的新手。 我知道如何在python中引发**自定义异常** ,并在stdout上打印一条消息。但是,当我处理多个模块和长代码时,在使用消息引发异常的同时,我还可以追溯吗?我的意思是追溯是获取错误行,或说出发生异常的函数和模块名称?我知道我发出的消息可以通过这样的方式修改我添加更多详细信息。但我想知道是否有任何内置的方式来做这件事。
答案 0 :(得分:2)
您不必“生成”回溯,Python在您引发异常(自定义或内置)时会处理此问题。
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
pythonrc start
pythonrc done
>>> class MyException(Exception): pass
...
>>> def foo():
... raise MyException("Hey")
...
>>> def bar():
... print "in bar"
... foo()
...
>>> bar()
in bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in bar
File "<stdin>", line 2, in foo
__main__.MyException: Hey
>>>
答案 1 :(得分:-1)
这个问题已在这里得到解答:
引用Glenn Maynard的答复:
很简单;将traceback作为第三个参数传递给。
import sys
class MyException(Exception): pass
try:
raise TypeError("test")
except TypeError, e:
raise MyException(), None, sys.exc_info()[2]
在捕获一个异常并重新引发另一个异常时始终执行此操作。