• 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()

  • 相关阅读:
    mui签到日历
    简单的vue-resourse获取json并应用到模板
    Ubuntu16.04安装wineqq国际版
    spring RestTemplate调用string和URL 请求问题
    java.util.AbstractSequentialList
    java.util.AbstractList
    maven pom 报错 inspects a maven model for resolution problems
    2019/9/6 spring实战第二章,shiro权限加密,授权
    2019/9/4 spring实战,shiro权限简单记录
    mybatis 转换结果问题
  • 原文地址:https://www.cnblogs.com/c491873412/p/7613027.html
Copyright © 2020-2023  润新知