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登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python实现的rsa加密算法详解
Jan 24 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Python实现ping指定IP的示例
Jun 04 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
对python中if语句的真假判断实例详解
Feb 18 Python
Python循环实现n的全排列功能
Sep 16 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python openCV自制绘画板
Oct 27 Python
Django restful framework生成API文档过程详解
Nov 12 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数据库备份类
2008/03/20 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
专业毕业生个性的自我评价
2013/10/03 职场文书
模具专业自荐信
2014/05/29 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
Kubernetes控制节点的部署
2022/04/01 Servers
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
python实现学员管理系统(面向对象版)
2022/06/05 Python