在 Python 中,sys.exc_info() 方法用于获取当前线程最后一个引发异常的相关信息。
它返回一个包含三个元素的元组 (type, value, traceback),分别表示引发的异常类型、异常对象和异常的堆栈跟踪对象。如果没有异常被引发,则返回 (None, None, None)。
下面是 sys.exc_info() 方法的使用示例:
import sys
def func():
try:
a = 1 / 0
except:
print(sys.exc_info())
func()
上面的代码中,我们在 func() 函数中故意引发了一个除以零的异常。在 except 块中,我们调用了 sys.exc_info() 方法,然后打印了返回的元组。运行代码,输出结果如下:
(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero'), <traceback object at 0x7f17a4093d00>)
可以看到,返回的元组中第一个元素为异常类型 ZeroDivisionError,第二个元素为异常对象 ZeroDivisionError('division by zero'),第三个元素为堆栈跟踪对象 <traceback object at 0x7f17a4093d00>。
sys.exc_info() 方法常用于在捕获异常后获取相关的异常信息,例如记录日志、打印错误信息等。值得注意的是,当使用 sys.exc_info() 方法获取异常信息后,需要及时清除异常信息,以避免内存泄漏。一般可以使用 sys.exc_clear() 或者 traceback.clear_frames() 方法来清除堆栈跟踪对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python获取异常信息sys.exc_info()函数详解 - Python技术站