在Python中,我如何提出自定义异常并进行追溯?

时间:2014-07-18 10:01:37

标签: python exception traceback

我是python的新手。 我知道如何在python中引发**自定义异常** ,并在stdout上打印一条消息。但是,当我处理多个模块和长代码时,在使用消息引发异常的同时,我还可以追溯吗?我的意思是追溯是获取错误行,或说出发生异常的函数和模块名称?我知道我发出的消息可以通过这样的方式修改我添加更多详细信息。但我想知道是否有任何内置的方式来做这件事。

2 个答案:

答案 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]

在捕获一个异常并重新引发另一个异常时始终执行此操作。