Python sys.exc_info()方法:获取异常信息
创始人
2024-05-29 14:56:35
0

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

捕获异常时,有 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 sys
try:x = int(input("请输入一个被除数:"))print("30除以",x,"等于",30/x)
except:print(sys.exc_info())print("其他异常...")

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

请输入一个被除数:0
(, ZeroDivisionError('division by zero',), )
其他异常...

输出结果中,第 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 traceback
try:x = int(input("请输入一个被除数:"))print("30除以",x,"等于",30/x)
except:#print(sys.exc_info())traceback.print_tb(sys.exc_info()[2])print("其他异常...")

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

请输入一个被除数:0File "C:\Users\mengma\Desktop\demo.py", line 7, in print("30除以",x,"等于",30/x)
其他异常...

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

print_tb 方法也仅是 traceback 模块众多方法中的一个,有关 traceback 模块如何获取更多异常信息,后续会做详细介绍。

Python教程,8天python从入门到精通,学python看这套就够了

相关内容

热门资讯

广东顺德清晖园概况讲解词 广东顺德清晖园概况讲解词  作为一位出色的导游人员,就难以避免地要准备导游词,导游词是导游员在游览时...
贵州兴义万峰湖导游词 贵州兴义万峰湖导游词  万峰湖位于贵州省黔西南自治州首府兴义市东南部,是中华人民共和国兴义国家地质公...
扬州个园简介导游词 扬州个园简介导游词  导语:扬州的个园,是一座独具风格的名园。它是清嘉庆、道光年间兴建起来的。当时园...
千岛湖导游词 千岛湖导游词  作为一名导游,有必要进行细致的导游词准备工作,导游词是我们引导游览时使用的讲解词。那...
四川峨眉山导游词 四川峨眉山导游词15篇  作为一名优秀的旅游从业人员,通常会被要求编写导游词,导游词具有极强的实用性...
四川经典导游词 四川经典导游词(通用13篇)  作为一位无私奉献的导游,通常需要用到导游词来辅助讲解,导游词是导游员...
鹿邑老君台导游词 鹿邑老君台导游词  老君台原名升仙台或拜仙台,原为明道宫的一部分,位于老子故里鹿邑县城内东北隅,老君...
长城英文导游词最新 长城英文导游词【最新】  长城是我国著名的古建筑,下面是由应届毕业生小编为大家带来的关于长城英文导游...
西部梦幻峡谷旅游区导游词 西部梦幻峡谷旅游区导游词各位游客,女士们、先生们:  大家上午好!我叫巴图,蒙古语意为坚固的、可靠的...
颐和园英文导游词 颐和园英文导游词精选  Hello, welcome you to Beijing Summer P...
黄山云海导游词 黄山云海导游词范文(精选10篇)  作为一名专门引导游客、助人为乐的导游,总归要编写导游词,导游词可...
宜春明月山导游词 宜春明月山导游词  宜春是个出美景的好地方。小编下面为大家收集整理了宜春明月山导游词,欢迎阅读!  ...
河南导游词 河南导游词  作为一位出色的导游人员,常常要写一份好的导游词,导游词具有极强的实用性,涉及的知识十分...
民居导游词六百字 民居,也是特色的景点之一。以下是PINCAI小编整理的关于导游词的相关内容,欢迎阅读和参考!民居导游...
英文导游词欢迎词 篇一:英文导游欢迎词范文Ladies and gentlemen:Welcome to ______...
介绍青岛的导游词 介绍青岛的导游词  作为一名专门引导游客、助人为乐的导游,往往需要进行导游词编写工作,导游词的主要特...
介绍山西普救寺导游词 介绍山西普救寺导游词  作为一无名无私奉献的导游,时常要开展导游词准备工作,导游词是导游员在游览时为...
孔府导游词 >孔府导游词颜宇欣 各位游客: 大家好!欢迎大家来到孔府游玩,孔府导游词。我是今天的导游颜宇欣,大家...
乔家大院简介导游词 乔家大院简介导游词  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播...
乐山大佛导游词 乐山大佛导游词500字五篇  作为一位尽职的导游,有必要进行细致的导游词准备工作,导游词是导游员同游...