Python获取异常的各种信息

Python获取异常的各种信息

文章目录

  • Python获取异常的各种信息
    • error.__class__.__name__: 类名称
    • str(error):异常信息
    • repr(error):异常类型和信息
    • traceback模块
    • 总结举例

在python中,异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置。下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try…except…程序结构。如下所示:

try:

  ...

except Exception as error:

  ...

error.class.name: 类名称

获取异常对象所属的类的名称

try:
    function()
except Exception as error:
    print 'type is:', error.__class__.__name__

str(error):异常信息

给出异常信息,不包括异常信息的类型,如1/0的异常信息

'integer division or modulo by zero'

repr(error):异常类型和信息

给出较全的异常信息,包括异常信息的类型,如1/0的异常信息

"ZeroDivisionError('integer division or modulo by zero',)"

traceback模块

需要导入traceback模块,此时获取的信息最全,与python命令行运行程序出现错误信息一致。

  • traceback.print_exc()打印异常信息到标准错误
    接口标准:traceback.print_exc([limit[, file]])
  • traceback.format_exc()将同样的输出获取为字符串。
  • 可以向这些函数传递各种各样的参数来限制输出,或者重新打印到诸如文件类型的对象。
  • traceback pytho3.7接口文档

总结举例

import traceback
import sys
try:
    int(a)
except Exception as error:
    print('str(Exception):{}'.format(str(Exception)))
    print('str(e):{}'.format(str(error)))
    print('error.__class__.__name__:{}'.format(error.__class__.__name__))
    print('repr(e):{}'.format(repr(error)))
    print('traceback.print_exc():')
    traceback.print_exc(file=sys.stdout)
    print('traceback.format_exc():{}'.format(traceback.format_exc()))   #字符串

输出结果:

str(Exception):<class 'Exception'>
str(e):name 'a' is not defined
error.__class__.__name__:NameError
repr(e):NameError("name 'a' is not defined")
traceback.print_exc():
Traceback (most recent call last):
  File "/home/hkx303/Documents/CI/robottelo/robottelo/tests/foreman/virtwho/my_test.py", line 4, in <module>
    int(a)
NameError: name 'a' is not defined
traceback.format_exc():Traceback (most recent call last):
  File "/home/hkx303/Documents/CI/robottelo/robottelo/tests/foreman/virtwho/my_test.py", line 4, in <module>
    int(a)
NameError: name 'a' is not defined

你可能感兴趣的:(Python,python,异常,try...except...,repr,traceback)