2024-04-25 14:04:40 发布
网友
当Python中发生异常时,可以检查堆栈吗?你能确定它的深度吗?我看过traceback模块,但我不知道如何使用它。
我的目标是捕获在解析eval表达式期间发生的任何异常,而不捕获它可能调用的任何函数引发的异常。不要因为我使用eval而责怪我。这不是我的决定。
注意:我想以编程的方式,而不是交互的方式。
traceback已经足够了——我认为文档描述得相当好。简化示例:
traceback
import sys import traceback try: eval('a') except NameError: traceback.print_exc(file=sys.stdout)
我喜欢追踪模块。
您可以使用sys.exc_info()获取回溯对象。然后,可以使用该对象使用traceback.extract_tb()获取一个经过预处理的回溯条目列表。然后您可以使用traceback.format_list()获得一个可读列表,如下所示:
sys.exc_info()
traceback.extract_tb()
traceback.format_list()
import sys import traceback, inspect try: f = open("nonExistant file",'r') except: (exc_type, exc_value, exc_traceback) = sys.exc_info() #print exception type print exc_type tb_list = traceback.extract_tb(sys.exc_info()[2]) tb_list = traceback.format_list(tb_list) for elt in tb_list: print elt #Do any processing you need here.
请参阅sys模块:http://docs.python.org/library/sys.html
回溯模块:http://docs.python.org/library/traceback.html
可以使用inspect模块,该模块具有一些用于跟踪的实用函数。看看frame对象的overview of properties。
traceback
已经足够了——我认为文档描述得相当好。简化示例:我喜欢追踪模块。
您可以使用
sys.exc_info()
获取回溯对象。然后,可以使用该对象使用traceback.extract_tb()
获取一个经过预处理的回溯条目列表。然后您可以使用traceback.format_list()
获得一个可读列表,如下所示:请参阅sys模块:http://docs.python.org/library/sys.html
回溯模块:http://docs.python.org/library/traceback.html
可以使用inspect模块,该模块具有一些用于跟踪的实用函数。看看frame对象的overview of properties。
相关问题 更多 >
编程相关推荐