zoukankan      html  css  js  c++  java
  • python标准库介绍——24 traceback 模块详解

    ==traceback 模块==
    
    
    [Example 2-18 #eg-2-18] 展示了 ``traceback`` 模块允许你在程序里打印异常的跟踪返回
    (Traceback)信息, 类似未捕获异常时解释器所做的. 如 [Example 2-18 #eg-2-18] 所示.
    
    ====Example 2-18. 使用 traceback 模块打印跟踪返回信息====[eg-2-18]
    
    ```
    File: traceback-example-1.py
    
    # note! importing the traceback module messes up the
    # exception state, so you better do that here and not
    # in the exception handler
    # 注意! 导入 traceback 会清理掉异常状态, 所以
    # 最好别在异常处理代码中导入该模块
    import traceback
    
    try:
        raise SyntaxError, "example"
    except:
        traceback.print_exc()
    
    *B*Traceback (innermost last):
      File "traceback-example-1.py", line 7, in ?
    SyntaxError: example*b*
    ```
    
    [Example 2-19 #eg-2-19] 使用 ``StringIO`` 模块将跟踪返回信息放在字符串中.
    
    ====Example 2-19. 使用 traceback 模块将跟踪返回信息复制到字符串====[eg-2-19]
    
    ```
    File: traceback-example-2.py
    
    import traceback
    import StringIO
    
    try:
        raise IOError, "an i/o error occurred"
    except:
        fp = StringIO.StringIO()
        traceback.print_exc(file=fp)
        message = fp.getvalue()
    
        print "failure! the error was:", repr(message)
    
    *B*failure! the error was: 'Traceback (innermost last):12  File
    "traceback-example-2.py", line 5, in ?12IOError: an i/o error
    occurred012'*b*
    ```
    
    你可以使用 ``extract_tb`` 函数格式化跟踪返回信息, 得到包含错误信息的列表, 
    如 [Example 2-20 #eg-2-20] 所示.
    
    ====Example 2-20. 使用 traceback Module 模块编码 Traceback 对象====[eg-2-20]
    
    ```
    File: traceback-example-3.py
    
    import traceback
    import sys
    
    def function():
        raise IOError, "an i/o error occurred"
    
    try:
        function()
    except:
        info = sys.exc_info()
        for file, lineno, function, text in traceback.extract_tb(info[2]):
            print file, "line", lineno, "in", function
            print "=>", repr(text)
        print "** %s: %s" % info[:2]
    
    *B*traceback-example-3.py line 8 in ?
    => 'function()'
    traceback-example-3.py line 5 in function
    => 'raise IOError, "an i/o error occurred"'
    ** exceptions.IOError: an i/o error occurred*b*
    ```
  • 相关阅读:
    .net core 之Hangfire任务调度
    .net core 在扩展中使用接口实例之IServiceProvider
    .net core webapi 配置swagger调试界面
    c# async/await异步编程死锁的问题
    c# 关于async/await异步编程的浅析和使用
    后端向服务器发送客户端请求--HttpWebRequest
    FluentAPI关系映射配置
    FluentAPI配置
    AutoFac与ASP.NET MVC结合使用
    Log4Net快速配置
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/7763721.html
Copyright © 2011-2022 走看看