打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Pythonsys.exc_info()方法:获取异常信息

在实际调试程序的过程中,有时只获得异常的类型是远远不够的,还需要借助更详细的异常信息才能解决问题。

    捕获异常时,有2种方式可获得更多的异常信息,分别是:

    1、使用sys模块中的exc_info方法;

    2、使用traceback模块中的相关函数。

    本节首先介绍如何使用sys模块中的exc_info()方法获得更多的异常信息。

    模块sys中,有两个方法可以返回异常的全部信息,分别是exc_info()和last_traceback(),这两个函数有相同的功能和用法,本节仅以exc_info()方法为例。

    exc_info()方法会将当前的异常信息以元组的形式返回,该元组中包含3个元素,分别为type、value和traceback,它们的含义分别是:

    type:异常类型的名称,它是BaseException的子类

    value:捕获到的异常实例。

    traceback:是一个traceback对象。

    举个例子:

#使用 sys 模块之前,需使用 import 引入import systry:
 x = int(input("请输入一个被除数:"))
 print("30除以",x,"等于",30/x)except:
 print(sys.exc_info())
 print("其他异常...")12345678复制代码类型:[python]

    当输入0时,程序运行结果为:

请输入一个被除数:0(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x000001FCF638DD48>)
其他异常...123复制代码类型:[python]

    输出结果中,第2行是抛出异常的全部信息,这是一个元组,有3个元素,第一个元素是一个ZeroDivisionError类;第2个元素是异常类型ZeroDivisionError类的一个实例;第3个元素为一个traceback对象。其中,通过前2个元素可以看出抛出的异常类型以及描述信息,对于第3个元素,是一个traceback对象,无法直接看出有关异常的信息,还需要对其做进一步处理。

    要查看traceback对象包含的内容,需要先引进traceback模块,然后调用traceback模块中的print_tb方法,并将sys.exc_info()输出的traceback对象作为参数参入。例如:

#使用 sys 模块之前,需使用 import 引入import sys#引入traceback模块import tracebacktry:
 x = int(input("请输入一个被除数:"))
 print("30除以",x,"等于",30/x)except: #print(sys.exc_info())
 traceback.print_tb(sys.exc_info()[2])
 print("其他异常...")1234567891011复制代码类型:[python]

    输入0,程序运行结果为:

请输入一个被除数:0
  File "C:\Users\mengma\Desktop\demo.py", line 7, in <module>
 print("30除以",x,"等于",30/x)
其他异常...1234复制代码类型:[python]

    可以看到,输出信息中包含了更多的异常信息,包括文件名、抛出异常的代码所在的行数、抛出异常的具体代码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python中try except处理程序异常的三种常用方法
python except 用法
八、Python traceback模块:获取异常信息
Traceback具体使用方法
Python基础学习笔记(八)异常处理
判断异常类型,全面捕获Python的异常
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服