Python异常模块traceback用法实例分析

所属分类: 脚本专栏 / python 阅读数: 958
收藏 0 赞 0 分享

本文实例讲述了Python异常模块traceback用法。分享给大家供大家参考,具体如下:

traceback模块被用来跟踪异常返回信息. 如下例所示:

import traceback
try:
  raise SyntaxError, "traceback test"
except:
  traceback.print_exc()

将会在控制台输出类似结果:

Traceback (most recent call last):
  File "H:PythonWorkSpaceTestsrcTracebackTest.py", line 3, in <module>
    raise SyntaxError, "traceback test"
SyntaxError: traceback test

类似在你没有捕获异常时候, 解释器所返回的结果.

你也可以传入一个文件, 把返回信息写到文件中去, 如下:

import traceback
import StringIO
try:
  raise SyntaxError, "traceback test"
except:
  fp = StringIO.StringIO()  #创建内存文件对象
  traceback.print_exc(file=fp)
  message = fp.getvalue()
  print message

这样在控制台输出的结果和上面例子一样,traceback模块还提供了extract_tb函数来格式化跟踪返回信息, 得到包含错误信息的列表, 如下:

import traceback
import sys
def tracebacktest():
  raise SyntaxError, "traceback test"
try:
  tracebacktest()
except:
  info = sys.exc_info()
  for file, lineno, function, text in traceback.extract_tb(info[2]):
    print file, "line:", lineno, "in", function
    print text
  print "** %s: %s" % info[:2]

控制台输出结果如下:

H:PythonWorkSpaceTestsrcTracebackTest.py line: 7 in <module>
tracebacktest()
H:PythonWorkSpaceTestsrcTracebackTest.py line: 5 in tracebacktest
raise SyntaxError, "traceback test"
** <type 'exceptions.SyntaxError'>: traceback test

test1.py中,当分母为0的时候,调用系统退出。代码如下:

#!/usr/bin/python
import sys
def division(a=1, b=1):
  if b==0:
     print 'b eq 0'
     sys.exit(1)
  else:
     return a/b

test2.py中,用try..except捕获异常,然后traceback.print_exc()打印。

代码如下:

#!/usr/bin/python
import sys
import traceback
import test1
a=10
b=0
try:
  print test1.division(a,b)
except:
  print 'invoking division failed.'
  traceback.print_exc()
  sys.exit(1)

执行test2.py失败抛出异常。

$python test2.py

execution python-2.5.1/python (enodeb/linux)
b eq 0
invoking division failed.
Traceback (most recent call last):
 File "test2.py", line 10, in <module>
  test1.division(a,b)
 File "/home/fesu/test1.py", line 6, in division
  sys.exit(1)
SystemExit: 1

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

更多精彩内容其他人还在看

深入浅析python3中的unicode和bytes问题

在python3中,有两种字符串类型,默认的就是str,即unicode,也叫做文本类型。这篇文章主要介绍了python3中的unicode和bytes问题,需要的朋友可以参考下
收藏 0 赞 0 分享

python3 自动识别usb连接状态,即对usb重连的判断方法

今天小编就为大家分享一篇python3 自动识别usb连接状态,即对usb重连的判断方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python二进制文件的转译详解

这篇文章主要介绍了python二进制文件的转译详解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

python字符串中匹配数字的正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。这篇文章主要介绍了python字符串中匹配数字的正则表达式 ,需要的朋友可以参考下
收藏 0 赞 0 分享

在Python中COM口的调用方法

今天小编就为大家分享一篇在Python中COM口的调用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Python read函数按字节(字符)读取文件的实现

这篇文章主要介绍了Python read函数按字节(字符)读取文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

python读取图片的方式,以及将图片以三维数组的形式输出方法

今天小编就为大家分享一篇python读取图片的方式,以及将图片以三维数组的形式输出方法,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

在python中利用numpy求解多项式以及多项式拟合的方法

今天小编就为大家分享一篇在python中利用numpy求解多项式以及多项式拟合的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Python正则表达式匹配数字和小数的方法

这篇文章主要介绍了Python正则匹配数字和小数的方法,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

python读写配置文件操作示例

这篇文章主要介绍了python读写配置文件操作,结合实例形式分析了Python针对ini配置文件的读取、解析、写入等相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多