在Python中如何抛出自定义异常并进行追踪?
我刚开始学习Python。我知道怎么在Python中抛出一个**自定义异常**,并且可以在标准输出上打印一条消息。但是当我处理多个模块和较长的代码时,抛出异常时带上消息,我能否追踪到出错的地方呢?我说的追踪就是能找到出错的行,或者说出错的函数和模块名?我知道我可以修改我输出的消息,添加更多详细信息。但我在想有没有什么内置的方法可以做到这一点。
2 个回答
-2
这个问题在这里已经有人回答过了:
引用那里的回答,来自Glenn Maynard:
其实很简单;把回溯信息作为第三个参数传给raise。
import sys
class MyException(Exception): pass
try:
raise TypeError("test")
except TypeError, e:
raise MyException(), None, sys.exc_info()[2]
在捕获一个异常后,再重新抛出另一个异常时,记得总是这样做。
3
你不需要自己去“生成”错误追踪信息,当你抛出一个异常(无论是自定义的还是内置的)时,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
>>>