10.12 异常和sys模块

    另一种获取异常信息的途径是通过sys模块中exc_info()函数。此功能提供了一个3元组(3-tuple)的信息,多于我们单纯用异常参数所能获得。让我们看看如何用sys.exc_info():

    10.12 异常和sys模块 - 图1

    我们从sys.exc_info()得到的元组中是:

    exc_type:异常类;

    exc_value:异常类的实例;

    exc_traceback:跟踪记录对象。

    我们所熟悉的前两项:实际的异常类,和这个异常类的实例(和在上一节我们讨论的异常参数是一样的)。第三项,是一个新增的跟踪记录对象。这一对象提供了的发生异常的上下文。它包含诸如代码的执行帧,异常发生时的行号等信息。

    在旧版本中的Python中,这三个值分别存在于sys模块,为sys.exc_type、sys.exc_value、sys.exc_traceback。不幸的是,这三者是全局变量而不是线程安全的。我们建议亡羊补牢,用sys.exc_info()来代替。在未来版本Python中,所有这三个变量都将被逐步停用,并最终移除。