zoukankan      html  css  js  c++  java
  • TraceBack模块

    import traceback
    def foo(arg):
        try:
            print(int(arg))
        except Exception as e:
            error=traceback.format_exc()
            print('error',error)
            print('type of error',type(error))
    foo("777aaa")
    打印结果:
    error Traceback (most recent call last):
      File "G:/Pycharmprojects/test.py", line 4, in foo
        print(int(arg))
    ValueError: invalid literal for int() with base 10: '777aaa'
    
    type of error <class 'str'>

    该模块提供了一个标准界面来提取,格式化和打印Python程序的堆栈跟踪。它在打印堆栈跟踪时完全模仿Python解释器的行为。当您要在程序控制下打印堆栈跟踪时,例如在解释器周围的“包装器”中,这很有用。

    该模块使用追溯对象 - 这是存储在sys.last_traceback变量中并作为第三个项目返回 的对象类型sys.exc_info()

    该模块定义了以下功能:

    traceback.print_tbtblimit = Nonefile = None 

    打印以限制堆栈跟踪条目从追溯对象tb(从调用方的帧开始),如果limit为正。否则,打印最后的 abs(limit)条目。如果省略限制,或者None打印所有条目。如果文件被省略,或None输出到 sys.stderr否则应该是一个打开的文件或类似文件的对象来接收输出。

    在版本3.5中更改:添加了负限制支持。

    traceback.print_exceptionetypevaluetblimit = Nonefile = Nonechain = True 

    将异常信息和堆栈跟踪条目从追溯对象tb打印 文件这与print_tb()以下方式不同:

    • 如果tb不是None,它打印头Traceback (most recent call last):
    • 在堆栈跟踪之后打印异常etype
    • 如果类型(值)SyntaxError具有适当的格式,它打印其中具有指示误差的近似位置脱字符号发生的语法错误的行。

    可选的limit参数与print_tb()如果为真(默认值),则链式异常(的 __cause____context__异常的属性)将被打印,以及像解释打印未处理的异常时本身一样。

    改变在3.5版本:VLAN时参数将被忽略,并从类型推断

    traceback.print_exclimit = Nonefile = Nonechain = True 

    这是一个速记print_exception(*sys.exc_info(), limit, file, chain)

    traceback.print_lastlimit = Nonefile = Nonechain = True 

    这是一个速记一般来说,只有在异常已经达到交互式提示之后才会有效(见 )。print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file,chain)sys.last_type

    traceback.print_stackf = Nonelimit = Nonefile = None 

    打印以限制堆栈跟踪条目(从调用点开始),如果limit为正。否则,打印最后的abs(limit) 条目。如果省略限制,或者None打印所有条目。可选的f参数可用于指定要启动的备用堆栈帧。可选文件参数的含义与 print_tb()

    在版本3.5中更改:添加了负限制支持。

    traceback.extract_tbtblimit = None 

    返回从追溯对象tb提取的“预处理”堆栈跟踪条目列表它对于堆栈跟踪的替代格式很有用。可选的limit参数与 print_tb()“预处理”堆栈跟踪条目是表示通常为堆栈跟踪打印的信息的4元组(文件名行号函数名称文本)。文本是开头和结尾的空白剥离的字符串; 如果源不存在,它是None

    traceback.extract_stackf =无limit = None 

    从当前堆栈帧中提取原始的追溯。返回值的格式与extract_tb()可选的flimit 参数与print_stack()

    traceback.format_listextracted_list 

    给定由extract_tb()extract_stack()返回的元组列表,或者 返回准备打印的字符串列表。结果列表中的每个字符串对应于参数列表中具有相同索引的项。每个字符串以换行符结尾; 字符串也可能包含内部的换行符,对于源文本行不是的项目 None

    traceback.format_exception_onlyetypevalue 

    格式化回溯的异常部分。的参数是异常类型和值,如由下式给出sys.last_typesys.last_value返回值是一个字符串列表,每个都以换行符结尾。通常,列表包含单个字符串; 但是,对于SyntaxError 异常,它包含几行(打印时)显示有关发生语法错误的详细信息。指示发生哪个异常的消息是列表中始终最后一个字符串。

    traceback.format_exceptionetypevaluetblimit = Nonechain = True 

    格式化堆栈跟踪和异常信息。参数与相应的参数含义相同print_exception()返回值是字符串列表,每个字符串都以换行符结尾,一些包含内部换行符。当这些线连接并打印时,打印完全相同的文本print_exception()

    改变在3.5版本:VLAN时参数将被忽略,并从类型推断

    traceback.format_exclimit = Nonechain = True 

    这样就可以print_exc(limit)返回一个字符串而不是打印到一个文件。

    traceback.format_tbtblimit = None 

    一个速记format_list(extract_tb(tb, limit))

    traceback.format_stackf =无limit = None 

    一个速记format_list(extract_stack(f, limit))

    traceback.clear_framestb 

    通过调用每个帧对象方法来清除回溯tb中所有堆栈帧的局部变量clear()

  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/c491873412/p/7613027.html
Copyright © 2011-2022 走看看