当前位置: 首页 > 编程笔记 >

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

翁昊乾
2023-03-14
本文向大家介绍Python异常模块traceback用法实例分析,包括了Python异常模块traceback用法实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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的时候,调用系统退出。html" target="_blank">代码如下:

#!/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程序设计有所帮助。

 类似资料:
  • 除了使用 sys.exc_info() 方法获取更多的异常信息之外,还可以使用 traceback 模块,该模块可以用来查看异常的传播轨迹,追踪异常触发的源头。 下面示例显示了如何显示异常传播轨迹: 上面程序中 main() 函数调用 firstMethod(),firstMethod() 调用 secondMethod(),secondMethod() 调用 thirdMethod(),thir

  • 本文向大家介绍Python hashlib模块用法实例分析,包括了Python hashlib模块用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python hashlib模块用法。分享给大家供大家参考,具体如下: 一、hashlib基本使用 python中的hashlib模块用来进行hash或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法。其支持Open

  • 本文向大家介绍Python pickle模块用法实例分析,包括了Python pickle模块用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python pickle模块用法。分享给大家供大家参考。具体分析如下: pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。 pickle.dump(obj, file[, protocol]) 序列化对象,并将

  • 本文向大家介绍Python中random模块用法实例分析,包括了Python中random模块用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中random模块用法。分享给大家供大家参考。具体如下: 运行结果如下: (2, 'cherry') 不管学哪个语言,我总喜欢弄个随机数玩玩。农历十一月初六,Let's Python!!! 运行结果如下: 5050 运行结果如

  • 本文向大家介绍python re模块常见用法例举,包括了python re模块常见用法例举的使用技巧和注意事项,需要的朋友参考一下 我们在用re模块时,根据不同的使用需求,我们要挑选不同的函数来匹配。考虑到大家初学python,在对于方法的学习上,小编推荐以常见的方法为主要学习目标。本篇所带来的是re.sub和re.compile两种函数,下面就这两个部分分别展开讲解,具体内容如下展开。 1、re

  • 本文向大家介绍python traceback捕获并打印异常的方法,包括了python traceback捕获并打印异常的方法的使用技巧和注意事项,需要的朋友参考一下 异常处理是日常操作了,但是有时候不能只能打印我们处理的结果,还需要将我们的异常打印出来,这样更直观的显示错误 下面来介绍traceback模块来进行处理 输出结果是integer division or modulo by zero