异常处理.深度跟踪

杀马特。学长 韩版系。学妹 提交于 2020-03-01 15:11:30

方式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()


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!