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


Posted in Python onOctober 22, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python单例模式的两种实现方法
Aug 14 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
使用python实现mqtt的发布和订阅
May 05 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
python 绘制正态曲线的示例
Sep 24 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
Django 实现jwt认证的示例
Apr 30 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
Python多线程爬取豆瓣影评API接口
Oct 22 #Python
Python Process多进程实现过程
Oct 22 #Python
详解python中eval函数的作用
Oct 22 #Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 #Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 #Python
python文件读写代码实例
Oct 21 #Python
python 动态调用函数实例解析
Oct 21 #Python
You might like
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
深入PHP数据加密详解
2013/06/18 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
会计自我鉴定范文
2013/10/06 职场文书
自荐信的五个重要部分
2013/10/29 职场文书
车辆安全检查制度
2014/01/12 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
企业办公室岗位职责
2014/03/12 职场文书
移风易俗倡议书
2014/04/15 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript