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 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
使用python实现strcmp函数功能示例
Mar 25 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
python 从list中随机取值的方法
Nov 16 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
python urllib和urllib3知识点总结
Feb 08 Python
python数据分析之用sklearn预测糖尿病
Apr 22 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHPUnit安装及使用示例
2014/10/29 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
python list的index()和find()的实现
2020/11/16 Python
python反扒机制的5种解决方法
2021/02/06 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
信息管理应届生求职信
2014/03/07 职场文书
食品采购员岗位职责
2014/04/14 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫