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的高级Git库 Gittle
Sep 22 Python
跟老齐学Python之编写类之三子类
Oct 11 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
Python编程中的异常处理教程
Aug 21 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
手把手教你python实现SVM算法
Dec 27 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
python如何建立全零数组
Jul 19 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 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调用Oracle存储过程
2006/10/09 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php flv视频时间获取函数
2010/06/29 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
jquery中获取元素的几种方式小结
2011/07/05 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Python星号*与**用法分析
2018/02/02 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
Python 获取项目根路径的代码
2019/09/27 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
python实现超级马里奥
2020/03/18 Python
Python的历史与优缺点整理
2020/05/26 Python
python操作链表的示例代码
2020/09/27 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
css 元素选择器的简单实例
2016/05/23 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
总结表彰大会主持词
2014/03/26 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
python使用torch随机初始化参数
2022/03/22 Python
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js
Tomcat配置访问日志和线程数
2022/05/06 Servers