加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Python sys.exc_info 方法 得到异常信息

发布时间:2022-07-07 07:00:32 所属栏目:语言 来源:互联网
导读:在实际调试程序的过程中,有时只获得异常的类型是远远不够的,还需要借助更详细的异常信息才能解决问题。 捕获异常时,有 2 种方式可获得更多的异常信息,分别是: 使用 sys 模块中的 exc_info 方法; 使用 traceback 模块中的相关函数。 本节首先介绍如何使
  在实际调试程序的过程中,有时只获得异常的类型是远远不够的,还需要借助更详细的异常信息才能解决问题。
 
  捕获异常时,有 2 种方式可获得更多的异常信息,分别是:
  使用 sys 模块中的 exc_info 方法;
  使用 traceback 模块中的相关函数。
 
  本节首先介绍如何使用 sys 模块中的 exc_info() 方法获得更多的异常信息。
  有关 sys 模块更详细的介绍,可阅读《Python sys模块》。
 
  模块 sys 中,有两个方法可以返回异常的全部信息,分别是 exc_info() 和 last_traceback(),这两个函数有相同的功能和用法,本节仅以 exc_info() 方法为例。
 
  exc_info() 方法会将当前的异常信息以元组的形式返回,该元组中包含 3 个元素,分别为 type、value 和 traceback,它们的含义分别是:
  type:异常类型的名称,它是 BaseException 的子类(有关 Python 异常类,可阅读《Python常见异常类型》一节)
  value:捕获到的异常实例。
  traceback:是一个 traceback 对象。
 
  举个例子:
  #使用 sys 模块之前,需使用 import 引入
  import sys
  try:
      x = int(input("请输入一个被除数:"))
      print("30除以",x,"等于",30/x)
  except:
      print(sys.exc_info())
      print("其他异常...")
  当输入 0 时,程序运行结果为:
  请输入一个被除数:0
  (<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x000001FCF638DD48>)
  其他异常...
 
  可以看到,输出信息中包含了更多的异常信息,包括文件名、抛出异常的代码所在的行数、抛出异常的具体代码。
  print_tb 方法也仅是 traceback 模块众多方法中的一个,有关 traceback 模块如何获取更多异常信息,后续章节会做详细介绍。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!