Python使用sys.exc_info()方法获取异常信息

Elena
Elena
发布时间:2026-10-14| 3人浏览过
原创

本文介绍如何在Python中通过sys模块的exc_info()方法获取详细的异常信息。该方法返回包含异常类型、实例和回溯对象的元组,结合traceback模块可打印完整的错误堆栈,包括文件名、行号及具体代码,从而辅助程序调试与问题定位。

Python异常信息获取概述

在实际程序调试过程中,仅知道异常类型往往不足以解决问题,必须借助更详尽的异常数据才能准确定位并修复错误。

在捕获异常时,主要有两种途径可以获取更丰富的异常信息:

  • 利用sys模块提供的exc_info方法;
  • 调用traceback模块中的相关函数。

本节重点讲解如何利用sys模块中的exc_info()方法来提取更多的异常详情。

如需了解sys模块的其他功能,请参考《Python sys模块》相关文档。

sys模块中提供了两个用于返回完整异常信息的函数:exc_info()和last_traceback()。两者功能与用法基本一致,本节仅以exc_info()为例进行说明。

sys.exc_info()方法详解

exc_info()方法会将当前发生的异常信息封装为一个元组返回,该元组包含三个元素: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>) 其他异常...

上述输出结果的第二行展示了完整的异常信息,这是一个包含三个元素的元组。第一个元素是ZeroDivisionError类;第二个元素是该类的具体实例,包含了错误描述;第三个元素是一个traceback对象。前两个元素足以揭示异常类型及其描述,但第三个元素作为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时,程序的运行结果如下:

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

从输出结果可以看出,现在包含了更详细的异常信息,包括出错的文件名、抛出异常代码所在的行号以及具体的错误代码片段。

以上内容即为本文的全部介绍,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。