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 相关文章推荐
python3.3实现乘法表示例
Feb 07 Python
深入理解python中的闭包和装饰器
Jun 12 Python
windows 下python+numpy安装实用教程
Dec 23 Python
zookeeper python接口实例详解
Jan 18 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
python logging模块的使用详解
Oct 23 Python
python源文件的字符编码知识点详解
Mar 04 Python
python保存图片的四个常用方法
Feb 28 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 一个随机字符串生成代码
2010/05/26 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
JS计算斐波拉切代码实例
2019/09/12 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
部署Python的框架下的web app的详细教程
2015/04/30 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python编写实现抽奖器
2020/09/10 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
总经理岗位职责范本
2014/02/02 职场文书
财务个人年度总结范文
2015/02/26 职场文书
自荐信格式模板
2015/03/27 职场文书
任命通知范文
2015/04/21 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server