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*
    ```
  • 相关阅读:
    [leetcode-136-Single Number]
    [leetcode-2-Add Two Numbers]
    [leetcode-150-Evaluate Reverse Polish Notation]
    [leetcode-1-Two Sum]
    DataTable数据分页
    ToList和ToDataTable(其中也有反射的知识)
    c#解决Nullable类型的转换 (包含DataContract的序列化和反序列化以及 该例子应用在反射属性setvalue的时候有用)
    ADO.NET DataTable的复制(clone)
    OracleBulkCopy
    LIst和table的转换
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/7763721.html
Copyright © 2011-2022 走看看