Nic*_*ack 18 python exception-handling stack-trace traceback
当Python中发生异常时,您可以检查堆栈吗?你能确定它的深度吗?我查看了traceback模块,但我无法弄清楚如何使用它.
我的目标是捕获在解析eval表达式期间发生的任何异常,而不会捕获它可能调用的任何函数抛出的异常.不要因为使用eval而责备我.这不是我的决定.
注意:我想以编程方式而不是交互方式执行此操作.
Dmi*_*kin 14
traceback就足够了 - 我认为文档描述得相当好.简化示例:
import sys
import traceback
try:
eval('a')
except NameError:
traceback.print_exc(file=sys.stdout)
Run Code Online (Sandbox Code Playgroud)
我喜欢回溯模块。
您可以使用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.
Run Code Online (Sandbox Code Playgroud)
查看 sys 模块:http : //docs.python.org/library/sys.html
和回溯模块:http : //docs.python.org/library/traceback.html
| 归档时间: |
|
| 查看次数: |
10900 次 |
| 最近记录: |