Python 获取异常信息的三种常用方法:str、repr 与 traceback
本文详细介绍 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 异常处理的知识,请持续关注本站的其他相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









