In Python how can I raise a custom exception and do a trace back as well?
本问题已经有最佳答案,请猛点这里访问。
我是python的新手。 我知道如何在python中引发**自定义异常**,并在stdout上打印一条消息。 但是当我处理多个模块和长代码时,在用消息引发异常的同时,我还可以追溯吗? 我的意思是追溯是获取错误行,还是说出发生异常的函数和模块名称? 我知道我发布的消息可以通过添加更多详细信息的方式进行修改。 但我想知道是否有任何内置的方式来做到这一点。
您不必"生成"回溯,Python在您引发异常(自定义或内置)时会处理此问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 >>> |
这个问题已在这里得到解答:
- Python中的"内部异常"(带回溯)?
引用Glenn Maynard的回应:
这很简单; 将traceback作为第三个参数传递给raise。
1 2 3 4 5 6 7 | import sys class MyException(Exception): pass try: raise TypeError("test") except TypeError, e: raise MyException(), None, sys.exc_info()[2] |
在捕获一个异常并重新引发另一个异常时始终执行此操作。