Python学习笔记调试之取得反向跟踪的字符串

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  如果Python遇到错误,他就会生成一些错误信息,称为“反向跟踪”。反向跟踪包含了出错消息、导致该错误的代码行号,以及导致该错误的函数

调用的序列。这个序列称为“调用栈”。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  示例代码:

1
2
3
4
5
6
7
8
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
def spam():
    bacon()
def bacon():
    raise Exception('This is the error message.')
spam()

  运行结果:

 

  通过反向跟踪,可以看到该错误发生在第 5 行,在 bacon() 函数中。这次特定的bacon() 调用来自第 2 行,在 spam() 函数中,它又在第 7 行被调用的。在从多个位置调用函数的程序中,

调用栈就能帮助你确定哪次调用导致了错误。

  只要抛出的异常没有被处理,Python 就会显示反向跟踪。但你也可以调用traceback.format_exc(),得到它的字符串形式。如果你希望得到异常的反向跟踪的信息,但也希望 except 语句

优雅地处理该异常,这个函数就很有用。在调用该函数之前,需要导入 Python 的 traceback 模块。

  例如,不是让程序在异常发生时就崩溃,可以将反向跟踪信息写入一个日志文件,并让程序继续运行。稍后,在准备调试程序时,可以检查该日志文件。

  示例代码:

  反向跟踪文本被写入d:\\ errorInfo.txt。

 

posted @   李荣洋  阅读(345)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示