Python2,3中获取异常信息--str,repr和traceback
python 中使⽤ try…except…程序结构获取异常信息,如下所⽰:
try:
  ...python的try和except用法
except Exception as e:
  ...
1、str,repr、traceback 的⽤法
1、str(e)
返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息
‘division by zero’
2、repr(e)
给出较全的异常信息,包括异常信息的类型,如1/0 的异常信息
“ZeroDivisionError(‘division by zero’)”
3、采⽤ traceback 模块
需要导⼊ traceback 模块,此时获取的信息最全,与 python 命令⾏运⾏程序出现错误信息⼀致。使⽤ traceback.print_exc() 打印异常信息到标准错误,就像没有获取⼀样,或者使⽤ traceback.format_exc() 将同样的输出获取为字符串。也可以向这些函数传递各种各样的参数来限制输出,或者重新打印到像⽂件类型的对象。
try:
1/0
except Exception as e:
print('str(e):\t',str(e))
print("repr(e):\t",repr(e))
import traceback
try:
1/0
except Exception as e:
print('traceback.print_exc():\n%s'% traceback.print_exc())
import traceback
try:
1/0
except Exception as e:
print('traceback.format_exc():\n%s'% traceback.format_exc())
2、python2、3 中的区别
(1)在 Python 3 Exception 的 except ⼦句中,不⽀持使⽤逗号 ‘,’ 分隔 Exception 和 e,所以需要采⽤ as 关键词进⾏替换python2 中⽀持如下写法,python3 不⽀持
try:
  ...
except Exception, e:
  ...
(2)python2 中有 e.message 的⽤法,获得的信息同str(e)
使⽤如下:
try:
1/0
except Exception as e:
print("e.message:", e.message)
执⾏结果:
('e.message:', 'integer division or modulo by zero')
Python 3 Exception 类没有 message 成员变量,python23 切换的时候,为了兼容同⼀换成 str(e)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。