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


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

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

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

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

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

      示例代码:

    #! 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 模块。

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

      示例代码:

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import traceback
    try:
        raise Exception("This is the error message.")
    except:
        errorFile = open('d:\errorInfo.txt','w')
        errorFile.write(traceback.format_exc())
        errorFile.close()
        print('The traceback info was written to errorInfo.txt.')
    

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

  • 相关阅读:
    字符串
    完全背包
    背包2
    0-1背包
    生日劲歌会
    设计照明系统
    宝岛探险
    汉诺塔问题
    并查集 黑帮危机
    数塔问题
  • 原文地址:https://www.cnblogs.com/lirongyang/p/9683254.html
Copyright © 2020-2023  润新知