您的位置:首页 > 编程语言 > Python开发

Python标准库-traceback模块

2010-02-22 13:33 465 查看
Example 2-18 展示了 traceback 模块允许你在程序里打印异常的跟踪返回
(Traceback)信息, 类似未捕获异常时解释器所做的. 如 Example 2-18 所示. 2.11.0.1. Example
2-18. 使用 traceback 模块打印跟踪返回信息 File: traceback-example-1.py # note!
import

Example 2-18 展示了 traceback 模块允许你在程序里打印异常的跟踪返回 (Traceback)信息, 类似未捕获异常时解释器所做的. 如 Example 2-18 所示.

2.11.0.1. Example 2-18. 使用 traceback 模块打印跟踪返回信息

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

Traceback (innermost last):

File "traceback-example-1.py", line 7, in ?

SyntaxError: example


Example 2-19 使用 StringIO 模块将跟踪返回信息放在字符串中.

2.11.0.2. Example 2-19. 使用 traceback 模块将跟踪返回信息复制到字符串

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)

failure! the error was: 'Traceback (innermost last):/012  File

"traceback-example-2.py", line 5, in ?/012IOError: an i/o error

occurred/012'


你可以使用 extract_tb 函数格式化跟踪返回信息, 得到包含错误信息的列表, 如 Example 2-20 所示.

2.11.0.3. Example 2-20. 使用 traceback Module 模块编码 Traceback 对象

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]

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: