python sys.exc_info()返回三元元组异常信息
sys.exc_info()
python标准库sys中的exc_info()方法,可以用于返回异常信息,可以使用try...except...语句来进行捕获。
sys.exc_info()返回值
该方法的返回值为python的三元元组类型,其部分源码如下:
exc_info(...)
exc_info() -> (type, value, traceback)
Return information about the most recent exception caught by an except
clause in the current stack frame or in an older stack frame.
提示:“->”符号指定返回值。
sys.exc_info()返回的三元元组的各个元素详情如下表:
元素 | 描述 |
---|---|
type | 指定异常的对象类型 |
value | 指定异常对象的值 |
traceback | traceback对象,一般包含导致异常的行数、位置等相关数据,就是python异常发生时终端中经常会输出的那部分内容,可以根据相应的提示,找到异常发生的代码行数。 |
sys.exc_infor()实例代码
如下代码编辑在一个py文件中,并非前面章节中经常使用的即时交互shell:
import sys
import traceback
try:
1/0
except:
tp, va, tb = sys.exc_info()
print(tp)
print(va)
for filename,linenum,modulename,source in traceback.extract_tb(tb):
print(filename,linenum,modulename,source)
#在终端中输入运行py文件的命令:python3 test.py(注意该命令与使用python test.py得到的输出结构有所不同),得到输出:
<class 'ZeroDivisionError'>
division by zero
test.py 6 1/0