Python 获取异常信息的三种常用方法:str、repr 与 traceback

咖啡半糖
咖啡半糖
发布时间:2026-10-14 | 6人浏览过
原创

本文详细介绍 Python 中获取异常信息的三种主要方式。通过 str(e) 仅获取错误描述,使用 repr(e) 获取包含类型的完整异常对象字符串,以及利用 traceback 模块获取最详尽的堆栈跟踪信息。文章对比了 print_exc 与 format_exc 的区别,并演示如何将异常日志写入文件,帮助开发者快速定位代码错误。

在程序调试过程中,准确获取异常信息对于快速定位错误代码位置至关重要。本文将介绍几种在 Python 中捕获和展示异常(Exception)信息的有效方法,所有示例均基于 try…except… 标准异常处理结构展开。

具体实现方式如下所示:


try:
  print(x)
except Exception as e:
  print(e)

1. 使用 str(e)

该方法返回字符串类型,仅包含异常的具体描述信息,不包含异常的类型名称。例如:


try:
  print(x)
except Exception as e:
  print(str(e))

运行后的打印结果为:


name 'x' is not defined

2. 使用 repr(e)

此方法提供的异常信息更为完整,除了描述信息外,还包含了异常的类型。例如:


try:
  print(x)
except Exception as e:
  print(repr(e))

运行后的打印结果为:


NameError("name 'x' is not defined",)

通常情况下,当我们明确了异常的具体类型后,可以对特定的异常进行更精确的捕获和处理,例如:


try:
  print(x)
except NameError:
  print('Exception Type: NameError')
except Exception as e:
  print(str(e))

3. 使用 traceback 模块

首先需要导入 traceback 模块。这种方式获取的信息最为全面,其输出内容与在 Python 命令行中直接运行程序出错时显示的信息完全一致。

使用方法:可以通过 traceback.print_exc() 或 traceback.format_exc() 来输出错误信息。

两者的区别在于:traceback.print_exc() 直接将错误信息打印到标准输出,而 traceback.format_exc() 则返回一个包含错误信息的字符串。

具体示例如下:


import traceback

try:
  print(x)
except Exception as e:
  traceback.print_exc()

上述代码等价于:


import traceback

try:
  print(x)
except Exception as e:
  msg = traceback.format_exc()
  print(msg)

两者的打印结果均为:


Traceback (most recent call last):
 File "E:/study/python/get_exception.py", line 4, in <module>
  print(x)
NameError: name 'x' is not defined

此外,traceback.print_exc() 还支持接收 file 参数,从而将错误信息直接写入到指定的文件中。例如:


# 写入到 tb.txt 文件中
traceback.print_exc(file=open('tb.txt','w+'))

以上便是 Python 获取异常信息的几种主要方法的详细介绍,如需了解更多关于 Python 异常处理的知识,请持续关注本站的其他相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表