方式1:traceback捕捉堆栈详细异常
1.traceback模块儿可打印异常发生时与函数调用堆栈相关的信息,函数可能多层嵌套,从被调用的函数依次搜索调用者并匹配异常处理程序,这个过程被称为"辗转开解",解释器一方面维护放置堆栈中函数有关信息,另一方面也维护着与已从堆栈中"辗转开解"函数有关信息
2.traceback模块儿print_exc()方法直接打印堆栈异常无返回,format_exc()方法返回堆栈异常信息
import traceback
try:
rhandler = open('unused.txt', 'r+b')
except IOError as io_err:
rhandler = None
traceback.print_exc()
finally:
if rhandler: rhandler.close()
方式2:sys回溯最后异常
1.sys.exc_info()返回值是一个tuple,(异常的类型, 异常的信息或参数, 调用堆栈的信息对象)
import sys
try:
rhandler = open('unused.txt', 'r+b')
except IOError as io_err:
rhandler = None
exc_type, exc_value, exc_trace = sys.exc_info()
print '''\
type : %s
value: %s
trace: %s
''' % (exc_type, exc_value, exc_trace)
finally:
if rhandler: rhandler.close()
来源:oschina
链接:https://my.oschina.net/u/2612057/blog/649146